0

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

4

3 回答 3

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();
}
?>
于 2012-11-29T16:51:07.250 回答
1

您可以使用GraphicsMagick

从他们的文档中:

GraphicsMagick 是图像处理领域的瑞士军刀。由基础包中的 282K 物理行(根据 David A. Wheeler 的 SLOCCount)源代码(或 964K,包括 3rd 方库)组成,它提供了强大且高效的工具和库集合,支持读取、写入和操作图像超过 88 种主要格式,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM 和 TIFF 等重要格式。

图像处理是使用 OpenMP 进行的多线程(参见多线程基准测试结果),因此 CPU 密集型任务会随着处理器内核的添加而线性扩展。OpenMP 支持需要使用 GCC 4.2(或更高版本)进行编译,或使用至少支持 OpenMP 2.0 规范的任何 C 编译器。

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

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

于 2012-11-29T16:57:26.633 回答
0

Gmagick是一个让GraphicsMagick易于使用的扩展,它本身就是 ImageMagick 的一个分支。

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

于 2012-11-29T16:55:01.880 回答