전체 파일을 읽지 않고도 파일이 어떤 이미지 형식인지 추론할 수 있는 방법이 있나요?

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

문제

전체 파일을 메모리로 읽어오지 않고도 이미지의 형식을 확인할 수 있는 좋은 방법이 있습니까?

분명히 이것은 형식마다 다를 수 있지만(특히 TIFF 파일에 관심이 있습니다) 전체 파일을 읽지 않고도 파일이 어떤 종류의 이미지 형식인지 결정하는 데 어떤 종류의 절차가 유용할까요?

보너스:이미지가 Base64로 인코딩된 문자열이면 어떻게 되나요?해독하기 전에 추론할 수 있는 믿을 만한 방법이 있나요?

도움이 되었습니까?

해결책

대부분의 이미지 파일 형식은 시작 부분에 고유한 바이트를 갖습니다.유닉스 file 명령은 파일의 시작 부분을 살펴보고 어떤 유형의 데이터가 포함되어 있는지 확인합니다.에 대한 Wikipedia 기사를 참조하세요. 파일의 매직 넘버 그리고 Magicdb.org.

다른 팁

물론 그렇습니다.다른 사람들이 언급한 것처럼 대부분의 이미지는 일종의 '마법'으로 시작하며, 이는 항상 일종의 Base64 데이터로 변환됩니다.다음은 몇 가지 예입니다.

비트맵은 다음으로 시작됩니다. Qk3

JPEG는 다음으로 시작됩니다. /9j/

GIF는 다음으로 시작됩니다. R0l (두 번째 문자는 0입니다.)

등등.다양한 이미지 유형을 가져와서 무엇으로 인코딩하는지 파악하는 것은 어렵지 않습니다.일부는 하나 이상의 마법을 가지고 있으므로 주의하세요. 따라서 B64 '번역 코드'에서 이를 설명해야 합니다.

어느 하나 file *nix 명령줄에서 실행하거나 파일의 초기 바이트를 읽는 중입니다.대부분의 파일에는 처음 몇 바이트에 고유한 헤더가 있습니다.예를 들어 TIFF의 헤더는 다음과 같습니다.

0x00000000: 4949 2a00 0800 0000
특히 해당 바이트가 무엇을 의미하는지 알고 싶다면 TIFF 파일 형식에 대한 자세한 내용을 확인하세요. 여기.

파일 형식에 대한 포괄적인 사이트는 다음에서 제공됩니다.

http://www.wotsit.org

TIFF는 II 또는 MM(Intel 바이트 순서 또는 Motorolla)으로 시작됩니다.
TIFF 6 사양을 다운로드할 수 있습니다. 여기 그리고 따라하기가 그리 어렵지도 않아요

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top