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;
我试图使用一个命令从原始文件中生成~30个作物(使用一个命令比使用每个作物的单个命令要快得多).但是,这需要花费很长时间(约30秒)才能完成.有什么建议加快这个吗?resize命令可以通过OpenCL利用GPU吗?
更新:
Kur*_*fle 34
您应该检查您的ImageMagick安装是否附带OpenCL支持:
convert -list configure | grep FEATURES
Run Code Online (Sandbox Code Playgroud)
如果它(像我的),你应该看到这样的事情:
FEATURES HDRI OpenCL
Run Code Online (Sandbox Code Playgroud)
这个命令
convert -version
Run Code Online (Sandbox Code Playgroud)
还应提供有关支持功能的信息.
如果没有,你应该考虑获得编译了OpenCL支持的最新版本的ImageMagick.或者如果你自己从源代码构建软件包,请确保使用OpenCL.
更新:
等一下.还有另一个可以帮助您的功能,称为OpenMP(用于多处理).
启用OpenMP后,ImageMagick命令可以在系统的所有核心上并行执行.因此,如果你有一个四核系统,并调整图像大小,调整大小发生在4个核心(如果你有超线程,甚至8个核心).
您现在还可以使用内置-bench
选项使ImageMagick为您的命令运行基准.例如:
convert logo: -resize 500% -bench 10 logo.png
Performance[1]: 10i 0.689ips 1.000e 14.420u 0:14.510
Run Code Online (Sandbox Code Playgroud)
此命令-resize 500%
告诉ImageMagick运行convert
命令以logo:
在每个方向上将内置IM 图像缩放500%.该-bench 10
部分告诉它在循环中运行相同的命令10次,然后打印性能结果:
Performance[1]:
).10i
).0.689ips
).您应该使用以下命令了解有关资源限制的系统设置方式:
identify -list resource File Area Memory Map Disk Thread Time -------------------------------------------------------------------- 192 4.295GB 2GiB 4GiB unlimited 1 unlimited
您可以看到我当前系统的设置(默认值 - 我没有调整它们).列标题中的每个关键字都可以使用pimp系统.
files
定义的最大同时打开这ImageMagick的将使用的文件.memory
,map
,area
和disk
资源限制以字节为单位定义.对于设置他们不同的值,你可以使用SI前缀,.eg 500MB).如果我有 OpenMP的ImageMagick的为这个系统上,我可以运行
convert -limit thread 2
Run Code Online (Sandbox Code Playgroud)
为了启用2个并行线程,重新运行基准测试并查看它是否真的有所作为,如果是这样,那么多少.我可以将限制设置为4或甚至8并重复练习....
最后,您可以尝试使用ImageMagick像素缓存的内部格式MPC
(Magick Pixel Cache).有人说,对于大型运营,这里的性能有所改善,但我没有个人经验.
首先将基本图片转换为MPC:
convert input.jpeg input.mpc
Run Code Online (Sandbox Code Playgroud)
然后才运行:
convert input.mpc [...your long-long-long list of crops...]
Run Code Online (Sandbox Code Playgroud)
并看看这是否能够为您节省大量时间.
很可能你甚至可以使用这种MPC格式"内联"(使用特殊mpr:
符号),类似于你使用将图像读入指定内存寄存器的mpr:
格式(内存程序寄存器)的技巧.但我从来没有尝试过这种技术来解决现实问题,所以我不能说它在现实生活中是如何运作的.
更新2:
还有一个想法:
首先检查您的确切ImageMagick版本:运行convert -version
.
如果您的ImageMagick 在其版本字符串中有一个Q16
(或偶数Q32
或Q64
)(意思是,其内部进程认为所有图像都具有16位通道深度,这需要双倍内存Q8
) - 这是现在的默认值 - 您可以测试通过切换到Q8-build,您将获得什么样的性能优势.(你将以质量损失支付你的表现胜利,你必须检查你是否可以忍受......)
小智 11
你的CPU时间是3个任务:
(裁剪本身可能需要1%的时间.)
要解码JPEG,只需执行一次,将结果保存在RAM中,然后重复使用每个输出.(详情如下.)这样,成本将是微不足道的.
要编码JPEG,请使用libjpeg-turbo; 相同的API,但如果使用x86- {32,64}或ARM硬件,则速度提高2-4倍.
为了调整大小,ImageMagick以使用~100倍的CPU而闻名,除了PhotoShop和GIMP之外的任何其他软件.这包括所有照片查看器.它每个像素执行多个三角函数,而其他人只做一次乘法运算.有时,如果您查看图像边缘附近的像素,您可以看到ImageMagick选择比竞争对手更好的颜色.但是如果您认为HTML5,Flash,Silverlight,Java,GD(受Perl,PHP和Python Web应用程序很受欢迎)等看起来很好,那么您就不需要这样的伪AI(人工智能).您可以将GPU(OpenCL)马力或更多CPU(OpenMP)投入ImageMagick,但为什么要这么麻烦?
对于高效率,相当于ImageMagick(事实上的标准)是Imlib2.它可以从几乎与ImageMagick一样多的OS /语言环境中使用.
你的"convert"shell命令相当于调用Imlib2的10-20行高级语言:解压缩JPEG,然后重复裁剪,调整大小和压缩JPEG.
没有裁剪(或多输出)的示例是: 使用Perl拉伸,调整大小或缩放图像
如果您想要其他示例,请告诉我们.
归档时间: |
|
查看次数: |
13575 次 |
最近记录: |