imagick已经完成的处理。
但是我们已经处理了一堆文件,其中一个方法只想提取它们的宽度/高度。
据我所知,Imagick to getImageWidth读取整个文件,并将其加载到内部结构中。
我想知道-是exif或gd有一些更轻量级的方法,只获得图像的宽度/高度。
//可以信任exif meta
我刚刚对127个PNG图像做了一个基准测试。看起来GD是GD和Imagick中最快的。如果您只想使用ImageMagick,那么首先用pingImage
加载文件并检索宽度和高度。这是IM方法中最快的。但仍比GD慢3倍。
+------------------------------------+---------------------------+
| Script/Task name | Execution time in seconds |
+------------------------------------+---------------------------+
| GD | 0.010726928710938 |
| IM Multiple Instance | 1.9311830997467 |
| IM Single Instance | 2.0554959774017 |
| IM Single Instance identifyImage | 1.4270191192627 |
| IM Single Instance pingImage | 0.036259889602661 |
| imagedimension-exif-gd-imagick.php | 5.467 |
+------------------------------------+---------------------------+
ImageMagic多实例意味着为不同的图像初始化不同的实例
foreach($pngs as $png){
$im = new Imagick($png);
list($width, $height) =array($im->getimagewidth(), $im->getimageheight());
}
ImageMagic单实例意味着使用Imagick的单个可迭代实例
$images = new 'Imagick($pngs);
foreach($images as $im){
list($width, $height) =array($im->getimagewidth(), $im->getimageheight());
}
ImageMagick单实例pingImage意味着使用pingImage
加载后获取尺寸
$im = new Imagick();
foreach($pngs as $png){
$im->pingImage($png);
list($width, $height) =array($im->getimagewidth(), $im->getimageheight());
}
ImageMagick Single Instance identifyImage意味着用pingImage();
加载后识别图像
$im = new Imagick();
foreach($pngs as $png){
$im->pingImage($png);
$im_info = $im->identifyImage();
extract($im_info['geometry']);
//echo $width. "x$height'n";
}
最后是GD
foreach($pngs as $png) {
list($width, $height) = getimagesize ($png);
}
注意: Exif扩展无法获取图像尺寸。这是在PHP手册中写的,
Height和Width的计算方法与getimagesize()相同,因此它们的值不能作为返回的头文件的一部分。另外,html是在普通html中使用的高度/宽度文本字符串。