从图像中读取像素的最快方法

时间:2012-11-29 16:47:55

标签: php image-processing gd

我的网站必须从图片中读取多达50,000个单独的像素。我需要一种方法来快速完成这项工作。现在,以22,000像素单独读取每个像素需要大约10秒钟。我知道GD不是最好的方法。什么PHP图像库是在短时间内读取大量像素的最快方法?

3 个答案:

答案 0 :(得分:1)

您可以尝试Imagick。虽然我不确定它是否真的会更快。这是一个例子:

<?php
$imagick = new Imagick("my_image.jpeg");
$iterator = $imagick->getPixelIterator();

foreach($iterator as $row => $pixels) {
    foreach ($pixels as $column => $pixel) {
        // Do something with $pixel
    }
    $iterator->syncIterator();
}
?>

答案 1 :(得分:1)

您可以使用GraphicsMagick

从他们的文件:

  GraphicsMagick是图像处理的瑞士军刀。由   28.2K物理线路(根据David A. Wheeler的SLOCCount)   基本包中的源代码(或964K包括第三方   它提供了一个强大而有效的工具集合   支持读取,写入和操作图像的库   超过88种主要格式,包括DPX,GIF,JPEG等重要格式   JPEG-2000,PNG,PDF,PNM和TIFF。

     

图像处理是多线程的(参见多线程基准测试   结果)使用OpenMP使CPU绑定任务线性缩放为   处理器核心已添加。 OpenMP支持需要编译   GCC 4.2(或更高版本),或使用任何至少支持的C编译器   OpenMP 2.0规范。

它是在2002年从ImageMagick的源代码中派生出来的。它有一个名为GMagick的pecl php扩展,并且比命令行执行图像处理操作要快得多,而且比ImageMagick快。

更新: GraphicsMagick比ImageMagick更快并不意味着GMagick比Imagick更好。图书馆的选择取决于您的要求。这里有一个关于这个主题的好答案:https://stackoverflow.com/a/5282269/199593

答案 2 :(得分:0)

Gmagick是一个扩展程序,可以很容易地使用GraphicsMagick,它本身就是ImageMagick的一个分支。

他们声称速度更快,但我自己没有使用它。