TIFF를 PNG/JPG로 변환할 때 발생한 오류를 지적해 주세요.

TIFF를 PNG/JPG로 변환할 때 발생한 오류를 지적해 주세요.

입력된 TIFF 이미지인데 JPG/PNG로 변환하고 싶습니다.googledrive-다운로드 샘플 링크

여기에 이미지 설명을 입력하세요.

일반적으로 저는 두 가지 이미지 형식(주로 JPG에서 PNG로)을 변환할 때 항상 다음 명령을 사용합니다.convert input.jpg out.png

하지만:

convert input.tiff out.png

다음 이미지를 생성합니다. TIF를 PNG로 변환하는 것이 작동하지 않는 이유를 지적할 수 있습니까? 이것이 색 공간/압축과 관련이 있습니까?

여기에 이미지 설명을 입력하세요.

혹시라도 : $identify input.tiff주어진

input.tiff TIFF 640x480 640x480+0+0 8-bit YCbCr 619120B 0.000u 0:00.000

또한 이미지를 만드는 방법에 대한 자세한 내용은 다음과 같습니다.

ffmpeg -hide_banner -loglevel error -y -f video4linux2 -i /dev/video0 -vframes 1 fname.tiff;

답변1

중요한 점은 YCbCr색상 공간(RGB가 아닌 비디오 색상 공간)이 변환되지 않기 때문에 생성된 PNG에 색상 공간 주석이 어딘가에 있고 PNG 뷰어가 이 주석을 지원하지 않거나 PNG에 convert문제가 있어 지원하지 않는다는 것입니다. 필요한 경우에도 색 공간 변환을 지원합니다.

convert옵션이 있으므로 -colorspace가장 먼저 시도한 것은 소스 및 대상 색상 공간을 명시적으로 설정하고 해당 방식으로 변환되었는지 확인하는 것이었습니다.

또한 입력 이미지가 흑백으로 나타나므로 회색조 PNG로 변환하는 것을 고려하십시오(Y 또는 강도 채널만 필요함).

답변2

색 공간 정보는 TIFF의 일부이므로(이 부분은 T의 약자입니다. 파일에는 이미지 구조에 대한 실제 정보가 있으므로두드러진), 이는 변환을 잘못하고 있음을 의미합니다(또는 다른 뷰어가 "성공"을 "잘못" 처리할 수 있는 방식으로 입력 파일이 손상됨).

따라서 해결책은 다음과 같습니다. convert/imagemagick(웹 역사상 가장 큰 서버 취약점 소스 중 하나)을 사용하지 마세요. 어쨌든 제 경험으로는 속도가 매우 느립니다.

노력하다econvert~에서정확한 이미지프로젝트.

그 외에는 Python PIL/Pillow가 제대로 작동할 수 있습니다. 이것이 실제로 첫 번째입니다.튜토리얼의 예(최소 수정) 텍스트 파일에 저장하고 실행 파일로 표시한 후 파일에서 사용하세요.

#!/usr/bin/env python3
import os, sys
from PIL import Image

for infile in sys.argv[1:]:
    filename, extension = os.path.splitext(infile)
    outfile = f"{filename}.jpg"
    if infile != outfile:
        try:
            with Image.open(infile) as im:
                im.save(outfile)
        except OSError:
            print(f"cannot convert {infile}")

답변3

내가 찾은 해결책은 먼저 다음을 사용하여 YCbCr변환 하는 것입니다.RGBAtiff2rgba. ( libtiff패키지에 포함되어 있음). 그런 다음 해당 RGB tiff를 다른 형식으로 변환하십시오.

$ tiff2rgba input.tiff out.tiff
$ convert out.tiff final.png

추가 정보:

$ identify input.tiff
input.tiff TIFF 640x480 640x480+0+0 8-bit YCbCr 618733B 0.000u 0:00.000
$ identify out.tiff
out.tiff TIFF 640x480 640x480+0+0 8-bit sRGB 858070B 0.000u 0:00.000

imagemagick없이 그냥 사용하는 등 더 간결한 답변이 있거나 tiff2rgba왜 이런 일이 발생하는지 알고 있다면 자유롭게 공유해 주세요. 감사해요.

관련 정보