나는 무손실로 제출 된 이미지가 필요한 응용 프로그램을 작성 중입니다. 현재 PIL로 이미지를 열고 "형식"속성이 무손실 형식인지 확인하고 있습니다. 예를 들어 제출 된 jpeg에 무손실 변형이 적용된 경우에는 수동으로 형식 목록을 유지해야합니다.파이썬에서 이미지 형식이 무손실인지 확인하고 싶습니까?
import PIL
import PIL.Image
def validate_image(path):
img = PIL.Image.open(path)
if not img.format.lower() in ['bmp', 'gif', 'png', ...]:
raise Exception("File %s has invalid image format %s" % (path, img.format))
이미지 파일은 무손실이 있는지 확인하는 더 좋은 방법이 있나요?
PIL을 사용해야합니까? 예를 들어, PythonMagick을 사용하면'CompressionType' 속성을 확인할 수 있습니다. 그리고 이것은 훨씬 쉬운 테스트입니다. 손실이있는 유일한 원시 압축 유형은'JPEGCompression'입니다 (손실 JPEG 및 TIFF 파일에서 사용됨). non-native 압축의 경우'UndefinedCompression'을 얻지 만, 항상 손실이라는 것을 가정 할 수 있습니다. – abarnert
무손실 JPEG는 여전히 "jpeg"이고 손실이 있거나 손실이없는 TIFF는 모두 "tiff"이므로 코드가 작동하지 않습니다. 하지만 한 걸음 물러서 ... 응용 프로그램에서 제출 된 이미지를 어떻게 처리합니까? 무손실 JPEG를 처리합니까? 그 문제는 PIL (또는 ImageMagick 등)이 처리하지 않는 모든 유형을 처리합니까, 아니면 PIL (등)이 수행하는 모든 유형을 처리하지 못합니까? 그렇다면 "무손실"을 검사하는 것만으로는 충분하지 않기 때문입니다. – abarnert
다른 말로하면 : 앱에 무손실 이미지가 필요한 이유는 무엇입니까? 손실 된 이미지가 주어지면 예외 (또는 C 또는 Java 또는 그와 동등한 것)가 발생하면 괜찮습니다. 프론트 엔드에 같은 코드 (또는 동일한 C 라이브러리의 래퍼)를 넣으면 실패하고, 실패하면 앱이이를 처리 할 수 없다는 것을 알 수있을 것입니다. 답이 무엇이든간에 솔루션은 아마도 무손실 여부를 확인하는 것보다 문제와 더 밀접한 관련이 있습니다. – abarnert