我应该相信 Imagick::getImageFormat() 吗?

Cho*_*per 2 php image imagemagick imagick

我需要知道我是否可以信任此代码来获取图像格式:

$image = new Imagick($path);
$format = $image->getImageFormat();
Run Code Online (Sandbox Code Playgroud)

或者我还应该像往常一样检查扩展名、mime 类型等吗?

Gre*_*een 5

您可以信任它,而不仅仅是pic.jpg使用简单的 php 字符串函数检查文件的扩展名(例如)。

你可以做个实验。例如,将图像文件重命名.jpg为。.png使用Windows“重命名”的简单工具。所以现在看来​​,图像就是.png图像。但尝试Imagick使用cmd命令-verbose,如下所示:

C:\>identify -verbose pic.png
Image: pic.png
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Class: DirectClass
  Geometry: 482x362+0+0
  Resolution: 72x72
  ... many more here ...
Run Code Online (Sandbox Code Playgroud)

你会看到现实中的图像是这样的.jpg。你的程序中的某个地方也是如此$image->getImageFormat();

Imagick是强大的工具。不幸的是,关于它的 PHP API 的信息比 GD 少得多。