首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP ImageMagick在调整大图像大小时使用10 PHP~内存

PHP ImageMagick在调整大图像大小时使用10 PHP~内存
EN

Stack Overflow用户
提问于 2014-10-20 20:29:44
回答 3查看 1K关注 0票数 0

当我尝试使用ImageMagick软件调整一个非常大的图像的大小时,比如30,000px x 20,000px,我遇到了问题。但是我没有足够的RAM。我有8 8GB,但软件需要大约10 8GB~。我需要使用RAM中的所有数据。我尝试了两个选项:

1使用convert,写入不同的图像文件:

代码语言:javascript
复制
convert -resize 90% source.jpg destination.jpg

使用mogrify的

  1. 会覆盖原始图像文件

mogrify -resize 90%source.jpg

也许有人知道我如何使用较少的内存或其他一些技巧。

有关Imagemagick的更多信息,请访问:http://www.imagemagick.org/script/mogrify.php

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-21 00:07:24

如果您试图将ImageMagick的内存策略配置为使用更多的内存,那么在缓存到磁盘之前,可以通过修改policy.xml或设置环境变量来定义区域限制。

在环境中设置内存限制

对于一次性过程,这可能是最快的方法。

代码语言:javascript
复制
MAGICK_AREA_LIMIT=8GB convert -resize 90% source.jpg destination.jpg

还尝试调整其他环境变量

  • MAGICK_MAP_LIMIT -分配给像素的最大内存量映射( of ) cache.
  • MAGICK_MEMORY_LIMIT -从堆中分配给像素缓存的最大内存量( of )。

使用Policy.xml设置内存限制

编辑{$PREFIX}/lib/ImageMagic-X.X.X/config目录下的policy.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policymap [
<!ELEMENT policymap (policy)+>
<!ELEMENT policy (#PCDATA)>
<!ATTLIST policy domain (delegate|coder|filter|path|resource) #IMPLIED>
<!ATTLIST policy name CDATA #IMPLIED>
<!ATTLIST policy rights CDATA #IMPLIED>
<!ATTLIST policy pattern CDATA #IMPLIED>
<!ATTLIST policy value CDATA #IMPLIED>
]>
<policymap>
  <policy domain="resource" name="memory" value="8GB"/>
  <policy domain="resource" name="map" value="8GB"/>
  <policy domain="resource" name="area" value="8GB"/>
</policymap>

验证

无论您选择哪种方法,都可以通过运行identify实用程序进行验证。

代码语言:javascript
复制
$ identify -list resource

  File       Area     Memory        Map       Disk   Thread  Throttle       Time
--------------------------------------------------------------------------------
  1920        8GB        8GB        8GB  unlimited        1         0  unlimited
票数 3
EN

Stack Overflow用户

发布于 2014-10-20 20:48:11

目前还不清楚你试图实现的总体目标是什么,但你可以在阅读图像时调整它的大小,这样应该会占用更少的内存:

代码语言:javascript
复制
convert source.jpg'[15000x10000]' destination.jpg
票数 1
EN

Stack Overflow用户

发布于 2018-06-19 21:07:05

编辑/etc/ImageMagick/policy.xml下的policy.xml

在我的例子中,它使用了超过2GiB的空间,但在这里你可以进行限制,这样脚本就可以在提供的限制下运行。我将其设置为mapmemory的512MiB。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26465773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档