【问题标题】:ImageMagick cache resource exhaustedImageMagick 缓存资源耗尽
【发布时间】:2021-10-06 18:43:58
【问题描述】:

我使用 PHP 和 Imagick 扩展来调整照片的大小(大约 5000x7000):

$img = new Imagick($fn);
$img->thumbnailImage($width, 0);

它适用于$width 是 800, 900 ... 1300, 但它在 1400 和 1600 时崩溃:cache resources exhausted /app/photo.jpg' @ error/cache.c/OpenPixelCache/4083

我认为这取决于宽度和结果图像大小。 谷歌搜索错误文本证实了我的猜测。 他们建议在 ImageMagick 配置中增加内存限制。

但是! 我尝试创建宽度为 2000 的图像,它工作正常!

1400、1600、1800 - 失败。 1900、2000、2100... - 成功。

我迷路了。

【问题讨论】:

  • 我认为这取决于文件大小而不是尺寸。
  • @fmw42,是的,但文件大小取决于尺寸)原始文件是固定的,比例是固定的
  • 您使用的文件的尺寸和文件大小是多少?请具体。如果是 JPG,那么在读取时它们会被解压缩并且更大。
  • @fmw42 我使用一个尺寸为 5000x7000 的原始文件
  • 你是如何制作更小的尺寸的?如果加载图像进行裁剪,则加载的是整个文件。

标签: php imagemagick imagick


【解决方案1】:

增加 ImageMagick 可能使用的资源量。您可以通过编辑 policy.xml 文件来控制 ImageMagick 可以使用多少资源。有关安全策略,请参阅 the documentation

在我的(Debian Linux)系统上,配置位于/etc/ImageMagick-6/policy.xml。请参阅here,了解各种操作系统上的不同位置。

我将以下设置更改为2GiB 以消除错误,您可能需要不同的设置,具体取决于您的需要和系统资源。查看文档。

<policy domain="resource" name="memory" value="2GiB"/>
<policy domain="resource" name="map" value="2GiB"/>

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 2017-12-03
    • 2016-06-29
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2021-09-19
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多