Skip to content
MagickCmd › ImageMagick 旋转与翻转

ImageMagick 旋转与翻转

用 ImageMagick 旋转和翻转图片。用 -auto-orient 修正手机拍出来横躺的照片,任意角度旋转,以及 -flip 与 -flop 的区别。

修正横躺的照片

手机是按传感器方向存图,再用一个 EXIF 标签告诉看图软件该转多少度。有些软件认这个标签,有些不认 —— 所以同一个文件在这个 app 里是正的,在另一个里就躺着。

magick input.jpg -auto-orient output.jpg

-auto-orient 把旋转真正写进像素并清掉标签,这样所有看图软件的表现就一致了。

一定要在裁切之前做。 先裁的话,你的坐标是针对没转正的图算的,裁出来的位置会莫名其妙。

直角旋转

magick input.jpg -rotate 90 output.jpg     # 顺时针
magick input.jpg -rotate 270 output.jpg    # 逆时针
magick input.jpg -rotate 180 output.jpg

直角旋转在像素层面是无损的,但重新编码 JPEG 依然会损失一代画质。如果在意,用 jpegtran -rotate 90,它不重新编码。

任意角度旋转

magick input.jpg -background white -rotate 15 output.jpg

非直角旋转会撑大画布,新出现的角落用 -background 填充。想让这些角落透明就设成 none 并输出 PNG:

magick input.png -background none -rotate 15 output.png

-flip 和 -flop 的区别

参数效果
-flip垂直翻转 —— 上下颠倒
-flop水平镜像 —— 左右互换

几乎所有人第一次都会记反。想做「镜子里的自拍」那种效果,你要的是 -flop

转置与转轴

magick input.jpg -transpose output.jpg    # flip 加旋转 90
magick input.jpg -transverse output.jpg   # flop 加旋转 90

把扫描件摆正

ImageMagick 可以自动估算并修正轻微的倾斜:

magick input.jpg -background white -deskew 40% +repage output.jpg

那个百分比是阈值,不是角度。白纸黑字的扫描件从 40% 起步比较合适。后面再加 -fuzz 5% -trim 可以把产生的白边裁掉。

批量修正整个文件夹的朝向

mkdir -p out
for f in *.jpg; do magick "$f" -auto-orient "out/$f"; done

相关页面

Copied