【发布时间】:2013-01-21 00:27:42
【问题描述】:
我需要知道我是否可以信任此代码来获取图像格式:
$image = new Imagick($path);
$format = $image->getImageFormat();
还是应该像往常一样检查扩展名、mime 类型等?
【问题讨论】:
标签: php image imagemagick imagick
我需要知道我是否可以信任此代码来获取图像格式:
$image = new Imagick($path);
$format = $image->getImageFormat();
还是应该像往常一样检查扩展名、mime 类型等?
【问题讨论】:
标签: php image imagemagick imagick
您可以信任它,而不仅仅是使用简单的 php 字符串函数检查文件的扩展名(例如pic.jpg)。
你可以做一个实验。例如,重命名.jpg 图像文件,使其变为.png。使用 Windows“重命名”的简单工具。所以现在看起来图像是.png 图像。
但是在cmd 中尝试Imagick 和-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 ...
您会看到实际上图像是.jpg。程序中某处的$image->getImageFormat(); 也是如此。
Imagick 是一个强大的工具。不幸的是,PHP 中关于其 API 的信息比 GD 少得多。
【讨论】:
如果您对 Imagick 类不满意,您可以随时尝试 GD 函数。例如
list (width, height, $type) = getimagesize($path);
$type 变量将是 IMAGETYPE_GIF、IMAGETYPE_JPEG、IMAGETYPE_PNG 等之一
见http://php.net/manual/en/function.getimagesize.php和http://php.net/manual/en/image.constants.php
【讨论】: