我有一台装有 Ubuntu 20.4 和 ImageMagick 6.9.10-23 的服务器。
较新的服务器使用 Ubuntu 22.04.3 LTS 和 ImageMagick 6.9.11-60。
我上传了一个 SVG 文件,想要将其转换为 PNG 并调整其大小。
convert -format png -density 1200 -resize '255x255>' /folder/test.svg /folder/test.png
使用旧服务器可以完美运行。
使用 ImageMagick 6.9.11-60 的较新服务器会抛出:
convert-im6.q16:宽度或高度超出限制 /tmp/magick-IXLGAi-fnZE2OS1MPM_W1DzbcXjNnrdl @ error/cache.c/OpenPixelCache/3909。 Convert-im6.q16:没有定义图像 /srv/users/hessen/apps/edumaps/public/temp/temp.png @ error/convert.c/ConvertImageCommand/3229。
我比较了两个
/etc/ImageMagick-6/policy.xml
文件,它们具有相同的设置。只有旧的policy.xml声明:
<policy domain="resource" name="area" value="128MB"/>
新的声明:
<policy domain="resource" name="area" value="128MP"/>
我将其更改为
128MB
,但仍然是相同的错误消息。
我也与
convert -list resource
核实。两台服务器的输出相同,只是旧服务器状态 List length: 18.446744EP
和新服务器状态 List length: unlimited
。
Resource limits:
Width: 16KP
Height: 16KP
List length: unlimited
Area: 128MP
Memory: 256MiB
Map: 512MiB
Disk: 1GiB
File: 768
Thread: 64
Throttle: 0
Time: unlimited
限制可以在docs中查看。但我在两台服务器上使用相同的文件。
SVG 文件为 744 x 1052 像素。
如何解决这个问题?
更改了这些行:
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>
到
<policy domain="resource" name="width" value="32KP"/>
<policy domain="resource" name="height" value="32KP"/>
现在可以了。感谢一千个@snibgo。学分:https://github.com/ImageMagick/ImageMagick/issues/6926