【发布时间】:2016-01-20 23:26:16
【问题描述】:
我有很多图像需要使用第三方 PHP 工具进行处理。所有这些图像都是 GIF、JPEG 或 PNG。但是,在某些图像上,由于 mime 类型不正确,我会收到错误消息。原来有些图像(主要是 JPG 文件)被检测为“application/octet-stream”。
每当我在任何查看器中打开图像时,一切似乎都正常。使用 Photoshop 重新保存此类图像后,mime 类型被正确检测为“image/jpeg”。我只是不喜欢打开和重新保存数千张图片。
我已经构建了一个出现问题的文件名列表。有什么方法可以“修复”图像以便检测到正确的 mime 类型?
我使用以下命令发现了不正确的 mime 类型:
file --mime-type <filename>
以下是一些示例图片:
运行identify -ping -verbose <filename> 不会只返回一个格式 的mime 类型。所有带或不带正确 mime 的 JPG 图像的格式为 Format: JPEG (Joint Photographic Experts Group JFIF format)。
有关版本的更多信息:
$ file --version
file-5.14
magic file from /etc/magic:/usr/share/misc/magic
$ identify --version
Version: ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP
【问题讨论】:
-
嗯? AFAIK 图像中没有嵌入 MIME 类型 - 它通常由 Web 服务器添加,那么您的 MIME 类型实际存储或实际来自哪里?
-
@MarkSetchell 我已更新文本以反映实际检测到 mime 类型并且未嵌入文件中。
-
如果您要回答自己的问题,请将其作为答案。另外-您的问题措辞仍然很糟糕。我仍然不知道您的实际问题是什么。
-
@Danack 我已将 shell 脚本放入答案中。不幸的是,我不能比我已经做过的更好地改写这个问题,或者告诉你问题是什么。由于我不知道实际问题是什么,所以我只看到在使用
file命令时我得到了一些图像的错误 mime 类型。在我的基于 PHP/imagick 的应用程序中无法导入完全相同的图像。运行convert可以解决此问题。
标签: bash image-processing imagemagick imagick