convert命令常用图片操作

1.convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型
convert  xxx.jpg  xxx.png 将jpeg转成png文件
2.改变图像的大小
convert -resize 1024x768  xxx.jpg   xxx1.jpg    将图像的像素改为1024*768,注意1024与768之间是小写字母x
convert -sample 50%x50%  xxx.jpg  xxx1.jpg   将图像的缩减为原来的50%*50%
3.旋转图像
convert -rotate 270 sky.jpg sky-final.jpg      将图像顺时针旋转270度
4.图像里面添加文字
convert -fill black -pointsize 60 -font helvetica -draw 'text 10,80 "Hello, World!" ‘  hello.jpg  helloworld.jpg

在图像的10,80 位置采用60磅的全黑Helvetica字体写上 Hello, World!

5.identify 获取图片信息
identify test.jpg
test.jpg JPEG 1080x1439 1080x1439+0+0 8-bit sRGB 53.2KB 0.020u 0:00.039
直接获取宽高
dentify -format "%wx%h" test.jpg
                            

参数解释

test.png 图片文件名称
JPEG 图片格式
1080x1439 图片的宽高
1080x1439+0+0 图片的宽x高+x轴+y轴
8-bit 每个像素点的最小单位,也决定了它是否是一个高清图,如8位,最高可以是256个色值
sRGB 图片的色彩格式
53.2KB 文件大小
                            

想知道的更多 可以 man identify

6.convert 对图片进行压缩、裁剪、缩放、图片格式转化

quality 质量压缩

图片质量压缩,可以降低图片的存储空间,质量92一般为无损压缩,例子如下:
convert test.jpg -quality 92 test.jpg_92.jpg
                            

-sample 参数结合

与risize 区别在与-sample 只进行了采样,没有进行插值,所有用来生成缩略图最合适
convert test.jpg -sample 50% test_sample_50%.png

使用-sample 放大一张图,由于没有进行插值,放大倍数到一定程度会出现马赛克,例如:
convet test.jpg -sample 1000% test_sample.jpg
                            

-resize 缩放

convert test.jpg -resize 1000% test_resize.jpg (无马赛克现象)
原因是由于 -resize 与找就近的像素进行采样插值
                            

-resize 与 -sample 参数也支持 宽x高的裁剪

convert test.jpg -resize 330x170 test_330x170.jpg
convert test.jpg -sample 200x110 test_200x110.jpg
                            

convert 也支持限高或限宽缩放

convert test.jpg -resize 330x test_330x.jpg (限宽330)
convert test.jpg -resize x170 test_x170.jpg (限高170)
                            

convert 格式转化

convert test.png -quality 92 test.jpg
                            

-crop 裁剪

按比例裁剪
-crop参数是从一个图片截取一个指定区域的子图片.

格式如下:convert -crop widthxheight{+-}x{+-}y{%}
width 子图片宽度
height 子图片高度
x 为正数时为从区域左上角的x坐标,为负数时,左上角坐标为0,然后从截出的子图片右边减去x象素宽度.
y 为正数时为从区域左上角的y坐标,为负数时,左上角坐标为0,然后从截出的子图片上边减去y象素高度.

例1:
$convert -crop 300x400+10+10 src.jpg dest.jpg
从src.jpg 坐标为x:10 y:10截取300x400的图片存为dest.jpg

例2:
$convert -crop 300x400-10+10 src.jpg dest.jpg
从src.jpg坐标为x:0 y:10截取290x400的图片存为dest.jpg
                            

当然不止可以从图片的左上角开始截图,可以从中心位置来截图,参数 -gravity

convert -gravity center -crop 300x400+0+0 src.jpg dest.jpg
从图片中心位置向四周裁剪大小为 300x400的区域
                            

crop参数也可以使用百分比,例如:

convert src.jpg -crop 50% dest.jpg
#生成dest-[0-3].jpg的图,其实全命令可以理解为: -crop 50%x50%+0+0
#设原图大小为200x100,则
#dest-0.jpg 为src.jpg的100x50+0+0,大小为100x50
#dest-1.jpg 为src.jpg的100x50+100+0,大小为100x50
#dest-2.jpg 为src.jpg的100x50+0+50,大小为100x50
#dest-3.jpg 为src.jpg的100x50+100+50,大小为100x50
                            

将原图从上到下平均裁剪成4份,如:

convert src.jpg -crop 100%x25%  dest.jpg
#dest-0.jpg 为src.jpg的200x25+0+0,大小为200x25
#dest-1.jpg 为src.jpg的200x25+0+25,大小为200x25
#dest-2.jpg 为src.jpg的200x25+0+50,大小为200x25
#dest-3.jpg 为src.jpg的200x25+0+75,大小为200x25
                            

只裁剪中心区域的50%

convert src.jpg -gravity center -crop 50%  dest.jpg
#此时只会出现一张图片 dest.jpg
#若src.jpg(200x100),则dest.jpg为从src中心位置向四周扩展50%的区域,即与执行下边命令的结果相同
convert src.jpg -gravity center -corp 100x50+40+25  dest.jpg