현재 다음 명령을 사용하고 있습니다.
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
그것의 유일한 목적은 인식하는 것입니다파일 형식~와 함께패턴해당 기관에서 제공한파일 형식. 그래서 당신은 더 나은 것을 찾지 못할 것입니다. 올바르게 인식되지 않는 파일에 대한 자체 확장자를 추가할 수도 있습니다. (명령 파일이 아닌 Magick에)