파일이 이미지 파일인지 확실하게 확인하는 방법은 무엇입니까? [복사]

파일이 이미지 파일인지 확실하게 확인하는 방법은 무엇입니까? [복사]

현재 다음 명령을 사용하고 있습니다.

file image.jpg | cut -d " " -f 2

여태까지는 그런대로 잘됐다. 이미지 확장자가 없는 파일에서도 작동합니다. 그렇다면 다른 방법이 있는지 궁금합니다. 위 코드가 실패하는 특정 상황을 보지 못할 수도 있습니다.

편집: 디렉터리의 이미지 파일 이름을 순차적으로 바꾸는 스크립트를 만들려고 합니다.

답변1

ImageMagick 프로젝트에는 이미지를 인식하는 기능이 있습니다.

나는 명령줄 "인식" 기능을 포함하여 ImageMagick을 사용해 왔으며 사진 인식에 실패한 적이 없습니다.

예를 들어 다음과 같이 형식 지정 이상의 기능을 제공합니다.

$  identify tmp3.jpg 
tmp3.jpg JPEG 1680x1050 1680x1050+0+0 DirectClass 8-bit 293.582kb 

$  identify tmp.png
tmp.png PNG 1012x900 1012x900+0+0 DirectClass 8-bit 475.119kb

답변2

를 사용하는 것은 file파일 형식을 식별하는 안정적인 방법입니다. 파일 확장자가 아니라 파일 내용의 시작 부분에 의존합니다.

프로세스를 더욱 강력하게 만들기 위해 libmagic직접 사용할 수 있습니다. 이렇게 하면 어떤 이유로 file출력 형식이 변경되어도 영향을 받지 않습니다. 그러나 이는 C 라이브러리의 함수를 호출할 수 있는 언어로 스크립트를 작성해야 함을 의미합니다.

답변3

libmagic유일한 목적은 pass 를 인식하는 것이기 때문에 명령이 맞습니다 .파일 유형그리고무늬각각 주어진파일 형식. 그래서 당신은 더 나은 것을 찾지 못할 것입니다. 자신만의 파일 확장자를 추가할 수도 있지만 제대로 인식되지 않습니다. (magick의 경우, 명령 파일이 아님)

관련 정보