【问题标题】:imagecreatefrompng() and size limitationimagecreatefrompng() 和大小限制
【发布时间】:2012-03-18 08:49:58
【问题描述】:

我在使用 PHP 中的 imagecreatefrompng() 函数时遇到了一些问题。

我开发了一个网站,其目标是允许用户上传他们自己的 Sprite Comics(使用从视频游戏中提取的资源制作的漫画,称为 sprites)。

我想在他们的画廊中展示他们漫画的一些缩影,所以我使用了 GD,当然还有 imagecreatefrompng()

但它会引发大图像的致命错误:

致命错误:内存不足(分配8388608)(试图分配 4545600 字节)

即使通过ini_set()设置“memory_limit”的值,也会出现同样的错误...

经过几个小时的研究,似乎是因为分辨率问题:imagecreatefrompng() 无法管理超过 1 040 000 像素的图像...!

非常非常不方便,因为我不能限制用户发送的漫画的大小......

您知道解决此问题的任何技巧吗?

提前致谢!

【问题讨论】:

  • 考虑使用 Flash 作为处理图像的方法,这会减轻一些服务器负载,并且不会有这些限制。只是一个想法,没做过,不知道是否真的可行。
  • 我不喜欢使用 Flash 的想法,但如果必须...谢谢您的回答 :)

标签: php gd imagecreatefrompng


【解决方案1】:

您需要让您的托管服务提供商设置更多的虚拟内存。这是php.ini - memory_limit 中的设置,免费进行应该不是问题。您现在处于最低值。

【讨论】:

  • 似乎不是因为“memory_limit”:我的默认值是90Mb,所以我认为已经足够了:/但是感谢您的回答!
  • 我认为我是对的。必须知道,每个像素在内存中乘以图片位深。 1 000 000 像素表示大约。图像 1024 x 768 像素。 16 位深度需要为基本负载分配最少 16 Mb 的内存。在调整大小或进行其他操作时,使用了相同大小的副本。图像操作所需的实际内存比看起来要高得多。仍然有 koeficent 1,5 - 2 用于乘以位计数结果。
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2022-10-26
  • 2015-03-09
  • 1970-01-01
  • 2011-11-21
  • 2015-09-27
  • 1970-01-01
相关资源
最近更新 更多