Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从图像中读取像素的最快方法_Php_Image Processing_Gd - Fatal编程技术网

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

Php 从图像中读取像素的最快方法,php,image-processing,gd,Php,Image Processing,Gd,我有一个网站,必须读取多达50000个人像素的图像。我需要一个快速的方法。现在,以22000像素的速度单独读取每个像素几乎需要10秒。我知道GD不是最好的方法。哪种PHP图像库是在短时间内读取大量像素的最快方法?您可以试试。虽然我不确定它是否真的会更快。下面是一个例子: <?php $imagick = new Imagick("my_image.jpeg"); $iterator = $imagick->getPixelIterator(); foreach($iterator

我有一个网站,必须读取多达50000个人像素的图像。我需要一个快速的方法。现在,以22000像素的速度单独读取每个像素几乎需要10秒。我知道GD不是最好的方法。哪种PHP图像库是在短时间内读取大量像素的最快方法?

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

<?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();
}
?>

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

他们说速度更快,但我自己没用过。

你可以用

根据他们的文件:

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

图像处理是多线程的(请参阅多线程基准测试) 结果)使用OpenMP,使CPU限制的任务线性扩展为 添加了处理器内核。OpenMP支持需要使用 GCC 4.2(或更高版本),或使用至少支持 OpenMP 2.0规范

它来源于ImageMagick 2002年的源代码。它有一个名为pecl-php的扩展,在从命令行执行图像处理操作时比ImageMagick快得多

更新:GraphicsMagick比ImageMagick快并不意味着GMagick比Imagick好。图书馆的选择取决于您的要求。关于这个问题,这里有一个很好的答案:

“PHP”和“fast”不能在同一句话中共存。。。第一个问题是:你将如何处理这些像素?我无法想象PHP能够以任何合理的速度加载50kx3字节,然后再对它们进行操作。。。您可能希望将整个过程推迟到C进程。我提供了一个纯PHP的答案,在我的机器上用大约3.6秒的时间读取一个6.5像素的图像,这个速度比你的测试快了大约800倍,对我来说似乎进入了合理的领域,尽管不可否认,它并没有将相似与相似进行比较。