目前我正在使用以下命令:
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,而不是命令文件)