有台旧机器上跑了个裁图的程序ImageMagick,迁移到新机器之后居然跑不动,情况如下:
新机器: DELL R710 操作系统版本:6.2 ImageMagick版本:6.5.4 convert占用cpu很高 文件系统使用了ext4
旧机器: HP DL360G5 操作系统版本:5.2 ImageMagick版本:6.0.1 convert占用cpu很低 文件系统ext3
新机器的负载情况:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7535 apache 20 0 1174m 3260 1960 D 233.8 0.0 0:01.21 /usr/local/bin/convert -strip -resize 95x120> -quality 9
7552 apache 20 0 1110m 3188 1956 R 230.0 0.0 0:01.19 /usr/local/bin/convert -strip -resize 100x75> -quality 9
7584 apache 20 0 1110m 3168 1932 D 183.6 0.0 0:00.95 /usr/local/bin/convert -strip -resize 100x75> -quality 9
7583 apache 20 0 1110m 3176 1936 D 172.0 0.0 0:00.89 /usr/local/bin/convert -strip -resize 100x75> -quality 9
7600 apache 20 0 1174m 3284 1960 D 125.6 0.0 0:00.65 /usr/local/bin/convert -strip -resize 95x120> -quality 9
7632 apache 20 0 1175m 10m 1932 D 121.8 0.0 0:00.63 /usr/local/bin/convert -strip -resize 400x300> -quality
7601 apache 20 0 733m 9.8m 1956 D 81.2 0.0 0:00.42 /usr/local/bin/convert -strip -resize 180x120> -quality 9
刚开始怀疑版本问题,安装最新版ImageMagick,效果也不明显,cpu占用还是挺高
后来经过strace跟踪处理过程,发现新旧版本之间的差异,就是多线程处理。
于是,发现问题在于新版本的ImageMagick启用了OpenMP,默认开启多线程处理,导致cpu占用过高。
解决办法:
重新编译ImageMagick最新版,增加了参数: --disable-openmp,负载就降下来了。
编译参数:
./configure --prefix=/usr/local/ImageMagick-6.7.9-7 --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --disable-openmp
另外,在此过程中,也有人推荐改用GraphicsMagick:http://www.graphicsmagick.org/
因为问题已经解决,就没有尝试,有兴趣的话可以去试试。
附GraphicsMagick编译参数,仅供参考
./configure --prefix=/usr/local/GraphicsMagick-1.3.16 --enable-libtool-verbose --with-included-ltdl --enable-shared --disable-static --with-modules --with-frozenpaths --without-perl --without-magick-plus-plus --with-quantum-depth=16
还有个重要的参数,根据情况选择是否增加吧,
--enable-sybol-prefix
避免和系统中已有的 ImageMagick 的冲突
分享到:
相关推荐
本例子用ImageMagick的convert命令实现了一些基础图形的绘制,他们有: 1.创建一个图片 2.在图片上画折线 3.在图片上折线,填充红色 4.在图片上画圆 5.在图片上画圆,填充蓝色 6.在图片上画圆,填充hex代码所代表的...
### ImageMagick命令使用文档知识点解析 #### 一、Overview概览 ImageMagick是一款功能强大的图像处理工具,能够执行图像合成、转换、编辑等多种任务。本文档将详细介绍`convert`命令及其各种选项,帮助用户更好地...
安装后,确保其可执行文件(如`convert`命令)能在命令行中调用。 2. 集成JNI库:获取Java绑定的ImageMagick库,如JavaMagick或JIMI。这些库提供Java接口来调用ImageMagick的功能。例如,JavaMagick包含了一系列...
ImageMagick 可以用命令行将pdf高质量转成jpg
convert 命令包含在 ImageMagick 安装包里。ImageMagick 可以安装在 Linux、Mac OS X、Windows 系统中。下载链接为:http://www.imagemagick.org/script/download.php 在 Centos8 中安装 ImageMagick,可以使用以下...
如果要将目录下所有的 jpg 文件转换为 gif 文件,可以使用 find 命令和 convert 命令结合: find ./ -name *.jpg -exec convert {} {}.gif ; 2. 大小缩放 使用 convert 命令可以将图像缩放到指定的大小。例如,将...
该模块是通过npm发布的,请使用以下命令安装最新发布的版本: npm install --save metalsmith-convert 依存关系 该模块使用node-imagemagick-native。 您必须能够编译c ++代码以安装imagemagick-native。 提供了...
GF3 SAR图像处理软件PolSAR,安装需要PolSARpro6.0安装包,包括Google Earth安装包、ESA-SNAP安装包、GIMP安装包、ImageMagick安装包,以及Convert.exe程序,PolSARproCheckConfigWin64.exe(用来检验PolSAR是否安装...
安装完成后,可以通过`convert -list format`命令来检查ImageMagick是否成功添加了HEIC支持。如果HEIC在输出列表中,说明安装成功。 接下来,我们可以使用`convert`命令进行HEIC和JP2图片格式之间的转换。例如,`...
这些命令可以通过命令行工具`convert`来执行。 3. 动画处理:不仅支持静态图像,还能处理GIF和其他形式的动画,进行动画的创建和编辑。 4. 图像分析:可以测量图像属性,如颜色分布、尺寸、几何形状等,对图像进行...
IM4Java 的作用是将 Java 代码转成对 ImageMagick 的命令行调用,因此 IM4Java API 与ImageMagick 的命令有一一对应的关系。例如,ImageMagick 的图片处理类型(deal_type)对应 xxxCmd,如:convert 处理类型对应 ...
1. **卸载旧版本**:首先,确认系统中是否存在已安装的ImageMagick,可以通过`convert --version`命令来查看。如果已安装,需要使用`yum erase ImageMagick`或`yum remove ImageMagick`进行卸载。 2. **安装依赖**...
ImageMagick安装包;ImageMagick安装注意事项;pdf转imgphp中ImageMagick安装教程;ImageMagick安装包;ImageMagick安装注意事项;pdf转imgphp中ImageMagick安装教程;ImageMagick安装包;ImageMagick安装注意事项;...
1. **转换图像格式**:`convert`命令是ImageMagick的核心工具之一,它可以将图像从一种格式转换为另一种。例如,`convert input.png output.jpg`这条命令将把PNG格式的图片转换为JPEG格式。 2. **缩略图和缩放**:`...
因此,开发者和用户应当了解如何有效地使用Imagemagick,包括遵循最佳实践,比如测试代码的鲁棒性、确保文件格式和尺寸适合处理,以及避免过度处理导致资源消耗过大。 内容中还包含了版权声明、编辑人员信息以及...