2008-10-20 5 views
3

큰 이미지 라이브러리에서 중복 제거를 찾으려면 스크립트를 작성하고 있습니다. 지금은 같은 크기의 파일을 먼저 찾은 다음 파일의 10240 바이트 부분에 sha256을 수행하여 동일한 크기 (코드 here)의 파일 지문을 얻는 두 단계 필터를 수행합니다.JPEG 내장 체크섬/지문?

잘 작동하지만 아마도 sha256 대신 jpeg 형식으로 체크섬이 내장되어있을 것입니다.

체크섬이나 지문처럼 작동하는 체크섬이 있는지 알고 있습니까? 그렇다면 효과적인 접근 방법이 있습니까?

+1

비슷한 물건을 시도하는 사람 : SHA 제품군은 암호화 용도로 사용되며 이러한 유형의 응용 프로그램에 대한 불필요한 복잡성으로 인해 훨씬 ​​간단한 CRC로 충분합니다 (그러나 MD5보다 복잡한 것은하지 않습니다). 결과 속도 향상은 임의로 선택된 10240 대신 전체 파일을 포함하는 데 사용될 수 있습니다. CRC가 정규화 된 크기 spezification (예 : 8 바이트)과 결합되면 두 번째 통과는 더 이상 사용되지 않습니다. – guidot

답변

5

JPEG 사양에 설명 된대로 체크섬이 포함되어 있다고 생각하지 않습니다.

JPEG에는 EXIF ​​메타 데이터의 일부로 미리보기 이미지가 포함될 수 있습니다. 두 개의 서로 다른 이미지가 동일한 미리보기를 가질 수 있기 때문에 완벽한 지표는 아닙니다. 이미지가 상당한 수정을 거친 후 대체되지 않는 썸네일에 대해 문서화 된 사례가 적어도 하나 있습니다. 썸네일은 게시자가 의도 한 것보다 훨씬 많은 것을 보여줍니다.

1

IJG 라이브러리를 파헤 치기 시작한 이래 잠시 있었지만 몇 가지 지문 유형을 확인하기 위해 사용할 수있는 쉬운 클래스 멤버 또는 함수 호출이 없다고 생각합니다. 이미지의 인코딩을 제어 할 수 있으면 내장 EXIF ​​태그를 사용할 수 있습니다.

0

JPEG 표준 (ITU-T.81)에는 압축 된 jpeg 이미지 파일 전체에 대해 체크섬이있는 필드/구문 요소가 없다고 생각됩니다. 사용자 정의 된 응용 프로그램이 응용 프로그램 세그먼트 또는 세그먼트에 표준으로 제공되는 메타 데이터로 그러한 파일을 넣지 않는 한. 당신의 목적을 달성하기 위해, 당신이하는 일은 한 가지입니다. 기타는 일부 바이너리 파일을 utlitiy과 비교하거나 (심지어 Windows 명령 fc/b과 같은) 일부 바이너리 파일을 호출 할 응용 프로그램 래퍼 일 수 있으며 비교 유틸리티의 결과를 확인하고 원하는 결정을 내릴 수 있습니다. 당신이 수행 할 수

-AD

0

한 가지 방법은 고정 된 크기로 모든 이미지를 줄이고 썸네일로 그를 저장합니다. 그런 다음 이미지 비교를 통해 비슷한 크기의 이미지를 비교하고 중복되는 기회를 얻을 수 있습니다. (많이 자른 경우를 제외하고) 자르거나 이미지의 크기를 조정하고 해당 사본을 찾고 싶을 때 유용합니다.

1

저는 방금 비슷한 스크립트를 작성했습니다. 태그가 수정 된 경우에도 실제 이미지가 중복되는지 확인하려는 체크섬 메타 데이터는 원하지 않습니다. 크기에 따라 정렬하지 말고 체크섬 istelf로 정렬하십시오. 필자는 jhead를 사용하여 메타 데이터를 제거한 다음 전체 파일의 체크섬을 작성합니다 (그러나이 파일의 일부만을 생각했지만 실제로는 많은 시간을 절약 할 수 있다고 생각하지 않습니다). jhead는 공유 메모리 (파이프)를 사용하지 않고 덮어 쓰므로 먼저 파일을 공유 메모리에 먼저 복사합니다. 나중의 빠른 검색을 위해 ImageDescription 필드에 체크섬을 배치합니다. 분명히 이것은 또한 나중에 이미지 무결성을 검사 할 수있게 해주 며 모든 것을 체크섬하는 이유의 일부입니다. 팁 : exiv2는 exificool보다 한 번에 결정 기반 조작을 위해 메타 데이터를 읽고 쓰는 데 훨씬 빠릅니다.

0

XMP 사양에는 이미지의 버전을 고유하게 식별해야하는 문서 ID 및 버전 ID가 있습니다.

이러한 문제 (및 다른 메타 데이터 기반 식별 방법)는 메타 데이터를 적절하게 업데이트하는 jpeg의 내용을 변경할 수있는 일부 응용 프로그램에서는이를 준수하지 않을 수도 있다는 점에서 문제가 있습니다.