ImageMagick批量调整性能 皈依\ original.jpg\ -质量85\ -色彩空间rgb\ -profile/var/tmp/sRGB.icm\ -剥落\ -profile/var/tmp/sRGB.icm\ -过滤兰索斯\ -编写mpr:17JPCONV1原件\ +删除\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“190x126!>”-写入thumbWide.jpg+delete\ mpr:17JPCONV1原件-裁剪“2981x2983+8+0”-调整大小“75x75!>”-写入thumbStandard.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“163x163!>”-写入hpSmall.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“1024x1019!>”-写入jumbo.jpg+删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“190x189!>”-写articleInline.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“2048x2037!>”-写入superJumbo.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“592x589!>”-写入tmagArticle.jpg并删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“3000x2983!>”-写入popup.jpg+删除\ mpr:17JPCONV1原件-裁剪“2981x2983+8+0”-调整大小“640x640!>”-写入square640.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“3000x1688!>”-写入videoSmall.jpg+删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“503x500!>”-写入slide.jpg+删除\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整'151x151!>'-写入moth.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“337x225!>”-写入hpmedia.jpg并删除\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“395x264!>”-写入sfSpan.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“3000x1688!>”-写入videoLarge.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“511x288!>”-写入hpLarge.jpg+delete\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整'320x320!>'-写入square320.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“600x338!>”-writearticlelog.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“3000x2000!>”-写入videoThumb.jpg+删除\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整大小'150x150!>'-写入thumbleglarge.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“533x530!>”-写blog533.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“151x151!>”-写blogsmalinline.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“362x360!>”-写入tmagSF.jpg+删除\ mpr:17JPCONV1原件-裁剪“2981x2983+8+0”-调整大小“190x190!>”-写入filmstrip.jpg+删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“480x478!>”-写blog480.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“427x425!>”-写blog427.jpg+delete\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整'50x50!>'-写blogsmollthumb.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1401+0+791”-调整大小“151x70!>”miniMoth.jpg;

ImageMagick批量调整性能 皈依\ original.jpg\ -质量85\ -色彩空间rgb\ -profile/var/tmp/sRGB.icm\ -剥落\ -profile/var/tmp/sRGB.icm\ -过滤兰索斯\ -编写mpr:17JPCONV1原件\ +删除\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“190x126!>”-写入thumbWide.jpg+delete\ mpr:17JPCONV1原件-裁剪“2981x2983+8+0”-调整大小“75x75!>”-写入thumbStandard.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“163x163!>”-写入hpSmall.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“1024x1019!>”-写入jumbo.jpg+删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“190x189!>”-写articleInline.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“2048x2037!>”-写入superJumbo.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“592x589!>”-写入tmagArticle.jpg并删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“3000x2983!>”-写入popup.jpg+删除\ mpr:17JPCONV1原件-裁剪“2981x2983+8+0”-调整大小“640x640!>”-写入square640.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“3000x1688!>”-写入videoSmall.jpg+删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“503x500!>”-写入slide.jpg+删除\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整'151x151!>'-写入moth.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“337x225!>”-写入hpmedia.jpg并删除\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“395x264!>”-写入sfSpan.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“3000x1688!>”-写入videoLarge.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“511x288!>”-写入hpLarge.jpg+delete\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整'320x320!>'-写入square320.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1689+0+647”-调整大小“600x338!>”-writearticlelog.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2001+0+491”-调整大小“3000x2000!>”-写入videoThumb.jpg+删除\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整大小'150x150!>'-写入thumbleglarge.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“533x530!>”-写blog533.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“151x151!>”-写blogsmalinline.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“362x360!>”-写入tmagSF.jpg+删除\ mpr:17JPCONV1原件-裁剪“2981x2983+8+0”-调整大小“190x190!>”-写入filmstrip.jpg+删除\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“480x478!>”-写blog480.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x2983+0+0”-调整大小“427x425!>”-写blog427.jpg+delete\ mpr:17JPCONV1原件-裁剪'2981x2983+8+0'-调整'50x50!>'-写blogsmollthumb.jpg+delete\ mpr:17JPCONV1原件-裁剪“3000x1401+0+791”-调整大小“151x70!>”miniMoth.jpg;,imagemagick,Imagemagick,我正在尝试使用一个命令从一个原始命令生成约30个作物(对每个作物使用一个命令要比使用一个命令快得多)。然而,这需要相当长的时间(约30秒)才能完成。有什么加速的建议吗?resize命令可以通过OpenCL利用GPU吗 更新: 使用-缩略图而不是-resize可以改善情况 (感谢@A R的提示)使用libjpeg-turbo编译ImageMagick也可以将时间提高20% 您应该检查ImageMagick安装是否附带OpenCL支持: convert \ original.jpg \

我正在尝试使用一个命令从一个原始命令生成约30个作物(对每个作物使用一个命令要比使用一个命令快得多)。然而,这需要相当长的时间(约30秒)才能完成。有什么加速的建议吗?resize命令可以通过OpenCL利用GPU吗

更新:

  • 使用-缩略图而不是-resize可以改善情况
  • (感谢@A R的提示)使用libjpeg-turbo编译ImageMagick也可以将时间提高20%

您应该检查ImageMagick安装是否附带OpenCL支持:

convert \ original.jpg \ -quality 85 \ -colorspace rgb \ -profile /var/tmp/sRGB.icm \ -strip \ -profile /var/tmp/sRGB.icm \ -filter Lanczos \ -write mpr:17JPCONV1-original \ +delete \ mpr:17JPCONV1-original -crop '3000x2001+0+491' -resize '190x126!>' -write thumbWide.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '75x75!>' -write thumbStandard.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '163x163!>' -write hpSmall.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '1024x1019!>' -write jumbo.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '190x189!>' -write articleInline.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '2048x2037!>' -write superJumbo.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '592x589!>' -write tmagArticle.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '3000x2983!>' -write popup.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '640x640!>' -write square640.jpg +delete \ mpr:17JPCONV1-original -crop '3000x1689+0+647' -resize '3000x1688!>' -write videoSmall.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '503x500!>' -write slide.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '151x151!>' -write moth.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2001+0+491' -resize '337x225!>' -write hpMedium.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2001+0+491' -resize '395x264!>' -write sfSpan.jpg +delete \ mpr:17JPCONV1-original -crop '3000x1689+0+647' -resize '3000x1688!>' -write videoLarge.jpg +delete \ mpr:17JPCONV1-original -crop '3000x1689+0+647' -resize '511x288!>' -write hpLarge.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '320x320!>' -write square320.jpg +delete \ mpr:17JPCONV1-original -crop '3000x1689+0+647' -resize '600x338!>' -write articleLarge.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2001+0+491' -resize '3000x2000!>' -write videoThumb.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '150x150!>' -write thumbLarge.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '533x530!>' -write blog533.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '151x151!>' -write blogSmallInline.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '362x360!>' -write tmagSF.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '190x190!>' -write filmstrip.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '480x478!>' -write blog480.jpg +delete \ mpr:17JPCONV1-original -crop '3000x2983+0+0' -resize '427x425!>' -write blog427.jpg +delete \ mpr:17JPCONV1-original -crop '2981x2983+8+0' -resize '50x50!>' -write blogSmallThumb.jpg +delete \ mpr:17JPCONV1-original -crop '3000x1401+0+791' -resize '151x70!>' miniMoth.jpg; 如果它是(像我的一样),你应该看到这样的东西:

convert -list configure | grep FEATURES
此命令

FEATURES      HDRI OpenCL
还应提供有关支持功能的信息

如果没有,您应该注意获取最新版本的ImageMagick,该版本在中编译了OpenCL支持。或者,如果您自己从源代码构建包,请确保使用OpenCL


更新:

哦,等等。还有另一个功能可以帮助您,称为OpenMP(用于多处理)

启用OpenMP后,ImageMagick命令可以在系统的所有核心上并行执行。因此,如果您有一个四核系统,并调整图像的大小,调整大小发生在4核(甚至8,如果您有超线程)

现在,您还可以使用内置的
-bench
选项使ImageMagick为您的命令运行基准测试。例如:

convert -version 
此带有
-resize 500%
的命令告诉ImageMagick运行
convert
命令,将内置IM
徽标:
图像在每个方向上缩放500%。
-bench 10
部分告诉它在循环中运行相同的命令10次,然后打印性能结果:

  • 因为我没有启用OpenMP,所以我只有一个线程(
    Performance[1]:
  • 它报告它运行了10次迭代(
    10i
  • 速度接近每秒0.7次迭代(
    0.689ips
  • 总用户平均时间为14.420秒
您应该通过以下命令了解系统是如何设置资源限制的:

convert logo: -resize 500% -bench 10 logo.png
  Performance[1]: 10i 0.689ips 1.000e 14.420u 0:14.510
为了启用2个并行线程,请重新运行基准测试,看看它是否真的有影响,如果有,影响有多大。我可以将限制设置为4甚至8,然后重复练习


最后,您可以尝试ImageMagick像素缓存的内部格式,称为
MPC
(Magick像素缓存)。有人说,对于大型操作,这里的性能有所提高,但我个人对此没有经验

首先将基础图片转换为MPC:

convert -limit thread 2
然后才运行:

convert input.jpeg input.mpc
看看这是否能为你节省大量的时间

最有可能的是,您甚至可以“内联”(使用特殊的
mpr:
表示法)使用此MPC格式,这与您使用
mpr:
格式(内存程序寄存器)将图像读入命名内存寄存器的技巧类似。但我从来没有尝试过这种技术
convert input.jpeg input.mpc
convert input.mpc [...your long-long-long list of crops...]
#!/bin/bash
counter=0
for i in tif/*.TIF;
do
    y=${i%.TIF}
    ((counter++))
    if [ -s gif$y.gif ];then
        :
    else
        gm convert $i gif$y.gif &
    fi
    if [ $counter -eq 30 ];then 
        ((counter =0))
        wait
    fi
done
wait