동일한 DPI를 유지하는 FFMPEG를 사용하여 TIFF를 JPG로 변환

동일한 DPI를 유지하는 FFMPEG를 사용하여 TIFF를 JPG로 변환

우리는 Java 애플리케이션에서 FFMPEG를 사용하고 있으며 tiff 파일을 jpg로 변환하려고 시도하고 있지만 요구 사항은 원본 tiff 파일과 동일한 DPI를 유지하는 것입니다.

저는 FFMPEG를 처음 접했고 이를 달성하기 위해 다음과 같은 실패한 시도를 시도했습니다.

  1. ffmpeg -y -i test.tif test.jpg: jpg로 성공적으로 변환되었지만 DPI가 300에서 96으로 감소했습니다. (이미지 마우스 오른쪽 버튼 클릭 --> 속성 --> 세부 정보 탭 --> 가로 및 세로 해상도 속성을 눌러 확인)
  2. ffmpeg -y -i test.tif -c:v copy test.jpg: 300dpi로 jpg로 변환했지만 실제 파일 형식은 여전히 ​​tif입니다. 확장자만 jpg로 바꾼거 같네요.
  3. ffmpeg -y -i test.tif -pix_fmt <format> test.gif(3가지 지원 형식 모두 시도:yuvj420p,yuvj422p yuvj444p): jpg로 변환되었지만 dpi는 300에서 96으로 변경되었습니다.
  4. ffmpeg y -i test.tif -r 1 -q:v <range> test.jpg(다양한 범위에서 시도: 1 ~ 10): 같은 문제입니다.

  5. 시도 -q:v하고 -qscale옵션을 시도했지만 이미지의 너비와 높이만 변경하는 것뿐입니다.

마지막으로 ImageMagick에 대해 들었고 다음 명령을 사용하여 첫 번째 시도에서 문제가 해결되었습니다.

  1. magick convert "test.tif" "test.jpg": jpg로 변환하면 dpi는 300입니다.

FFMPEG를 사용하여 동일한 결과를 얻을 수 있습니까? 그렇다면 제가 오랫동안 여기에 갇혀 있으니 친절하게 도와주세요.

답변1

한 가지 알아야 할 점은 DPI가 이미지의 데이터와 아무 관련이 없다는 것입니다. 하드웨어의 출력 기능을 기반으로 한 구성입니다. 이미지에는 파일에 데이터가 있는 개별 픽셀이 너무 많습니다. 1인치에 들어가는 픽셀 수를 측정하는 것은 프린터 출력이나 장치 디스플레이에만 중요합니다. 이미지 데이터 자체에는 고유한 픽셀 "크기"가 없습니다. 일부 이미지 파일 형식은 "DPI"를 포함할 수 있는 메타데이터를 지원하지만 기본적으로 이미지 자체에는 의미가 없습니다.

현재 보고 있는 DPI 정보는 이미지 파일을 표시하는 데 사용하는 프로그램에서 임의로 할당할 수 있습니다. 페인트 프로그램에서 이미지가 300DPI라고 표시되면 이는 DPI 태그가 없는 파일의 데이터와 아무 관련이 없을 수 있습니다. TIFF 파일에는 DPI와 같은 메타데이터 태그(형식이 "태그된 이미지 파일 형식"인 이유)가 포함될 수 있지만 이미지 데이터에는 중요하지 않습니다.

이러한 개념은 특히 사람들이 이해하기 어려운 것처럼 보이지만 사실은 그림 요소(픽셀)에는 크기가 없습니다. 출력 장치에만 DPI 측정값이 있습니다. DPI를 변경하지 말라는 요구 사항은 데이터 보존 요구 사항에 대한 누군가의 생각이라고 생각됩니다. 그런데 JPEG는 손실이 있는 압축 방식이므로 적용하는 압축 정도가 임의의 DPI 메타데이터보다 훨씬 더 중요합니다. DPI 레이블을 유지하면서 JPEG 형식으로 압축하면 이러한 이미지가 손상될 수 있습니다.

관련 정보