【问题标题】:How efficient is a PHP image resource?PHP 图像资源的效率如何?
【发布时间】:2016-05-14 21:13:15
【问题描述】:

我有一个非常大的 PNG 图像,我正在编写一种方法来获取该图像的特定(但不断变化的)像素处的颜色值。当我使用以下方法创建图像时:

$image = imagecreatefrompng('map.png');

是整个图像加载到内存中(不理想),还是只是读取元数据并准备其他调用,以便在我调用时:

int imagecolorat ( resource $image , int $x , int $y )

文件会寻找正确的像素还是从内存中提取?如果我试图优化此例程以重复调用,是否将我需要的图像数据转换为一些原始二进制格式并使用文件搜索会更好?如果可能的话,我想避免将整个文件重复加载到内存中。

【问题讨论】:

  • 整个图像被加载到内存中,每像素4字节;任何操作通常都需要两倍的内存
  • @MarkBaker - 听起来像是答案而不是评论:) 把它放在下面,我会给你支票。 (顺便说一句,这是有道理的,因为通过压缩,文件中像素的确切位置将不为人知。)看起来我必须将其转换为平面文件并使用 fopen / fseek
  • 曾经有一个名为 PHPqb 的 PHP 扩展(该网站现在 php-qb.net 似乎已经死了),它是为高内存效率的图像处理而设计的,尽管它仍然可以通过 PECL 获得/跨度>

标签: php php-gd memory-efficient


【解决方案1】:

你需要一个很大的 php 内存来玩 php 图片资源。 请改用 graphicsMagick。 http://www.graphicsmagick.org/

【讨论】:

  • 并不是真正尝试进行图像处理,我真正想做的是获取特定坐标的许多地理特征。 Elevation 有一个 Google API,但我需要树密度之类的东西——它们的唯一来源似乎是大量的灰度 TIFF 文件。基本上,我将不得不将它们转换成类似于 8 位 BMP(0 压缩)的东西,这样我就可以在数学上知道要访问哪个字节以获得我需要的值。
猜你喜欢
  • 1970-01-01
  • 2012-04-11
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 2019-03-07
相关资源
最近更新 更多