pacman
我在 Arch Linux 上安装了 ImageMagick 。现在我尝试合成两个图像,如下所示:
convert \( -size 1x1 xc:black \) \( -size 1x1 xc:black \) -composite out.png
但它在 100% CPU 负载时冻结。我需要用 杀死它^C
。如您所见,它与输入图像大小或任何内容无关,因为我尝试合成两个 1x1 像素内存图像。 ImageMagick 的版本:
$ convert --version
Version: ImageMagick 6.9.1-2 Q16 x86_64 2015-05-19 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: DPC HDRI Modules OpenCL OpenMP
Delegates (built-in): bzlib cairo fontconfig freetype gslib jng jp2 jpeg lcms lqr ltdl lzma pangocairo png ps rsvg tiff webp wmf x xml zlib
答案1
显然这是 OpenMP 的一个已知问题,OpenMP 是一个提供多线程支持并默认编译到 ImageMagick 的库。
为了解决这个问题,我下载并提取了 ImageMagick 的源代码:
wget ftp://ftp.imagemagick.org:21/pub/ImageMagick/ImageMagick-6.9.1-2.tar.gz -O - | tar xzv
然后像这样编译:
cd ImageMagick-6.9.1-2
./configure --disable-openmp
make
sudo make install
所以我的版本看起来像这样:
$ /usr/local/bin/convert --version
Version: ImageMagick 6.9.1-2 Q16 x86_64 2015-05-24 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: DPC
Delegates (built-in): bzlib fftw fontconfig freetype jng jpeg lcms lqr lzma pangocairo png tiff webp x xml zlib
它终于起作用了 - 它不再冻结并立即产生我想要的输出。