최신 정보
또한 GitHub의 Python 스크립트에서 다음 솔루션을 구현했습니다 .
또한 손상된 파일 (jpg)은 종종 '깨진'이미지가 아닌지 확인했습니다. 즉, 손상된 사진 파일이 때때로 합법적 인 사진 파일로 남아 있고 원본 이미지가 손실되거나 변경되었지만 오류없이로드 할 수 있다는 것을 확인했습니다. 그러나 파일 잘림으로 인해 항상 오류가 발생합니다.
업데이트 종료
대부분의 이미지 형식과 함께 Python Pillow (PIL) 모듈을 사용하여 파일이 유효하고 손상되지 않은 이미지 파일인지 확인할 수 있습니다.
깨진 이미지도 감지하려는 경우 @Nadia Alramli가 im.verify()
방법을 올바르게 제안 하지만 가능한 모든 이미지 결함을im.verify
감지하지는 못합니다. 예를 들어 잘린 이미지는 감지하지 못합니다 (대부분의 시청자는 종종 회색 영역으로로드 됨).
Pillow 는 이러한 유형의 결함도 감지 할 수 있지만 이미지 조작 또는 이미지 디코딩 / 리코딩을 적용하거나 검사를 트리거해야합니다. 마지막으로이 코드를 사용하는 것이 좋습니다.
try:
im = Image.load(filename)
im.verify() #I perform also verify, don't know if he sees other types o defects
im.close() #reload is necessary in my case
im = Image.load(filename)
im.transpose(PIL.Image.FLIP_LEFT_RIGHT)
im.close()
except:
#manage excetions here
이미지 결함의 경우이 코드는 예외를 발생시킵니다. im.verify가 이미지 조작을 수행하는 것보다 약 100 배 더 빠르다는 것을 고려하십시오 (그리고 플립이 더 저렴한 변환 중 하나라고 생각합니다). 이 코드를 사용하면 표준 Pillow를 사용하는 경우 약 10 MBytes / sec, Pillow-SIMD 모듈 (최신 2.5Ghz x86_64 CPU)을 사용하는 경우 40 MBytes / sec의 이미지 집합을 확인할 수 있습니다.
다른 형식 psd , xcf , ..의 경우 Imagemagick wrapper Wand를 사용할 수 있습니다 . 코드는 다음과 같습니다.
im = wand.image.Image(filename=filename)
temp = im.flip;
im.close()
그러나 내 실험에서 Wand는 잘린 이미지를 감지하지 못하기 때문에 부족한 부분을 프롬프트없이 회색 영역으로로드한다고 생각합니다.
나는 그 빨간 있는 Imagemagick가 외부 명령이 식별 그 수있는 일을,하지만 난 프로그램이 함수를 호출하는 방법을 발견하지 않은 나는이 경로를 테스트하지 않았습니다.
항상 예비 검사를 수행하고 파일 크기 가 0 (또는 매우 작음)이 아닌지 확인 하는 것이 매우 저렴한 아이디어입니다.
statfile = os.stat(filename)
filesize = statfile.st_size
if filesize == 0:
#manage here the 'faulty image' case