Vmware 需要帮助在GraphicsMagck中将PSD转换为PNG吗

Vmware 需要帮助在GraphicsMagck中将PSD转换为PNG吗,vmware,freebsd,psd,graphicsmagick,Vmware,Freebsd,Psd,Graphicsmagick,我正在尝试使用以下命令将GraphicsMagck中的PSD转换为PNG: #gm convert file.psd -flatten file.png 当web应用程序处于停滞状态时,一切看起来都没有问题。 当我将web应用程序移动到生产服务器时,某些PSD文件将收到以下错误消息: In GraphicsMagick 1.3.12 : gm convert: Too much image data in file. 或者这个: In GraphicsMagick 1.2.10 : gm c

我正在尝试使用以下命令将GraphicsMagck中的PSD转换为PNG:

#gm convert file.psd -flatten file.png
当web应用程序处于停滞状态时,一切看起来都没有问题。 当我将web应用程序移动到生产服务器时,某些PSD文件将收到以下错误消息:

In GraphicsMagick 1.3.12 : gm convert: Too much image data in file.
或者这个:

In GraphicsMagick 1.2.10 : gm convert: Memory allocation failed (unable to allocate cache info) [Cannot allocate memory].
最可笑的是,它可以在分段服务器中工作,但在生产服务器中不起作用。 暂存服务器是VMWare中的FreeBSD,生产服务器是物理服务器

我在网上找到的文档很少。就在几个月前,这里:

提到同样的问题,但没有回答


我想知道我是否能在这里得到帮助。或者可能我错了,我应该选择ImageMagick。

生产服务器的每进程内存限制可能低于您的临时VM。也就是说,限制可能是由软件施加的,而不是实际的硬件

限制可以是每个用户(或者更确切地说是)以及系统范围(使用sysctl)。试着跑步

% sysctl -Aa|fgrep kern.max
并比较两台服务器之间的输出(kern.maxdsiz和kern.maxssiz是特别感兴趣的)。此外,请尝试以web服务器用户身份运行限制:

% su          # become root
% su -m www   # become www
% limits
再次比较输出


最后,是否您的生产服务器只是在使用更多的内存(用于其他事情,例如服务其他内容),而临时系统只处理单个文件转换,因此没有达到限制?

我遇到了这个确切的问题。这似乎是graphicsmagick的一个局限性。如果使用-debug all开关,您将看到psd解码器试图分配的内存超过每个进程的可用内存

例如,我有一个6MB的psd,我想把它插入jpg。通用汽车无法做到这一点,因为它试图一次将其全部充气,需要64GB的ram(这是在我的开发机器上,它只有8GB)


我在imagemagick上运行了相同的命令,它(在我的开发机器上)没有问题。

它们有相同的体系结构吗?i386还是x86_64?Freebsd和GraphicsMagck在两台服务器上是否相同?两台服务器上的内存大小是多少?我们看到了相同的错误。在我们的例子中,它只发生在64位上,而不是32位框上。HTH@Nico是的,你是对的。我和你有相同的看法。它只发生在64位计算机上。通用汽车确实不可靠。我们搬到了IM,一切正常。直到今天,我做了另一个测试,通用还在64位上运行。嗨,米哈伊尔T,谢谢你的帮助。在本例中,这是因为GM在64位上有bug。对于简单的PSD文件,它是可以工作的,但是如果PSD文件在64位机器上超过3个图形层,GM就不能工作了。我之前在FreeBSD上维护了GM端口,我对作者有一个健康的尊重。我很确定,如果你向他们报告错误,他们会及时修复。