ImageMagick的基本使用

ImageMagick的基本使用

ImageMagick是一个开源的强大的图片处理库,可用来创建、编辑、合成或转换位图图像,比如:调整大小,翻转,镜像,旋转,扭曲,剪切和变换图像,调整图像颜色,应用各种特殊效果,或绘制文本,线,多边形,椭圆和贝塞尔曲线等等。

本文只列出我使用过的命令,并不是完整的教程,随着我平时使用的增加,文章会不断更新,命令会不断增加,当然如果我平时用的少,那可能就只会有这些了。

安装

由于我是macOS,所以使用macOS最常用的包管理器brew来安装

brew install imagemagick

安装后,它主程序就一个magick,但它会有很多符号链接链接到magick,如下图所示
-w499

既然都是符号链接,从理论上来说,我用identify和用magick应该是一模一样的才对,但实际上却是这样的(如图所示)
image.jpg

我猜是因为它把命令本身也当成一个参数,当它识别到是identify时,它就会做输出图片简略信息的操作。事实上,identify是magick的子命令,所以我们还可以这样写
image.jpg

所以,所有的符号链接其实都是magick的子命令,通用的使用方法是

magick 子命令 参数

但magick却巧妙的给magick创建多个符号链接,并把符号链接名称命名为它的子命令名,这样在使用上就好像是多了一个可执行文件,其实内部还是通过识别符号链接的名称来自动识别到它是子命令,以达到简化命令的目的,让我们可以直接以下边这种方式调用

子命令 参数

常用命令


获取图片信息

#显示简略图片信息
identify /path/to/image.png

#显示详细图片信息
identify -verbose /path/to/image.png

resize缩放

#缩放到指定大小
convert /path/to/source.png -resize 200x200 /path/to/target.png

#按百分比缩放
convert /path/to/source.png -resize 50% /path/to/target.png

#多次缩放(本例是缩小再放大,效果就是变模糊了,可用于做马赛克)
convert /path/to/source.png -resize 50% -resize 200% /path/to/target.png

#只缩放宽,高按比例(省略高不写即可,但“x”号还是要写的)
convert /path/to/source.png -resize 200x /path/to/target.png

#只缩放高,宽按比例(省略宽不写即可,但“x”号还是要写的)
convert /path/to/source.png -resize x200 /path/to/target.png

#批量把iPhone拍的照片缩小成指定尺寸
declare -i j=0;for i in *.JPG; do convert $i -resize 1008x ${i:0:$[${#i}-4]}_resized.jpg;j=j+1;echo $j"."$i" convert succeed"!; done

sample采样缩放(只采样不插值,一般用于做缩略图)

#原图的50%
convert image.png -sample 50% sample.png

#先缩小再放大,就是马赛克效果
convert image.png -sample 10% -sample 1000% sample.png

裁剪

#从(50,50)坐标开始,裁剪一个100⨉100大小的图片
convert image.png -crop 100x100+50+50 crop.png

#不指定位置,则会把大图片分隔成100⨉100的小图片,生成crop-0.png, crop-1.png, ……
convert image.png -crop 100x100 crop.png

修改位深

convert source.jpg -depth 8 target.png

同时缩放和修改位深(用于压缩png图片)

convert /path/to/source.png -resize 1080x1920 -depth 8 /path/to/target.png

格式转换(直接写转换后的格式就行)

convert /path/to/source.png /path/to/target.jpg
convert /path/to/source.png /path/to/target.webp

压缩iPhone的截图(可从8M多压到200多k,但清晰度差不多)

convert /path/to/source.png -resize 1080x1920 /path/to/target.jpg

把当前文件夹下的所有PNG图片转成JPG

declare -i j=0;for i in *.PNG; do convert $i ${i:0:$[${#i}-4]}.jpg;j=j+1;echo $j"."$i" convert succeed"!; done

注:${#i}表示获取i的长度,${i:m:n}表示从字符串i的第m个字符开始截取,共截取n个字符,感叹号不能放在双引号里面。

使用效果如下:
image.jpg


参考:后台使用imagemagick的convert命令来处理图片真是太方便了。

打赏
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Alex
Alex
2 days ago

test

0
Would love your thoughts, please comment.x
()
x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

ImageMagick的基本使用