紫悦博客

不进则退,退一步万丈悬崖!

0%

ImageMagick生成指定尺寸缩略图并且填充背景色的四种方法

参照ImageMagick的文档
http://www.imagemagick.org/Usage/thumbnails/

简单的缩图:convert  test.gif -resize 100x100 test_100x100.gif
等比缩放填充背景:convert -define jpeg:size=100x100 old.jpg -thumbnail ‘100x100>’ -gravity center -extent 100x100 -colors 100 +profile ‘*’ new.jpg

cmyk转rgb
convert -colorspace rgb 123.jpg 123.jpg

一、v6.3.2 以上建议使用
convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail ‘100x100>’
-background skyblue -gravity center -extent 100x100 pad_extent.gif

二、v6.3.2之前

convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail ‘100x100>’
-bordercolor skyblue  -border 50
-gravity center  -crop 100x100+0+0 +repage pad_crop.gif

三、v6.2.5以上的另一种方法

convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail ‘100x100>’
-gravity center  -crop 120x120+0+0!
-background skyblue  -flatten    pad_view.gif

四、图片合并的方法
composite -define jpeg:size=200x200 -resize ‘100x100>’ -gravity
center hatching_orig.jpg background.gif composite.gif

经过蜂鸟网友实际上传的1000张图片测试

一、pad_extent:60.8s
二、pad_crop:68.3s
三、pad_view:61.8s
四、composite:62.1s

第一种官方推荐的方法速度确实最快,二最慢,总体差距不大(15%以内)

但方法一、二对动画的gif图片会生成多个缩略图,还没找到参数关闭

方法二的-border参数可能还要根据实际情况修改

方法四要事先准备一张背景图进行合并,比较麻烦

最后采用第三种方法