Skip to content
MagickCmd › ImageMagick 缩放命令生成器

ImageMagick 缩放命令生成器

在线生成 ImageMagick 缩放命令。讲清 ^ ! > < % 各个后缀的区别,做不变形的定尺寸缩略图,IM7 与 IM6 语法一键切换。

缩放几乎是所有人用 ImageMagick 做的第一件事,也是最容易浪费时间的地方 —— 因为 -resize 的行为完全取决于你在尺寸后面加的那一个字符。

上面的生成器里选好参数复制命令就行。下面这段解释它到底做了什么,下次你可以自己写。

五种缩放行为

命令结果
-resize 800x600缩放到装得进 800×600。保持比例,所以通常有一边小于你填的值。
-resize 800x600!强制输出 800×600,比例不符时会把图压变形
-resize '800x600^'填满目标框,某一边会溢出。配合 -extent 裁掉溢出部分。
-resize '800x600>'只在图更大时缩小。本来就小的原样通过。
-resize '800x600<'只在图更小时放大。

怎样缩放才不变形

-resize 一个不带任何符号的 宽x高,ImageMagick 永远不会变形 —— 它会把图装进这个框并保持比例。只有加了 ! 才会变形。

magick input.jpg -resize 1200x1200 output.jpg

只指定宽度,高度自动算

magick input.jpg -resize 800 output.jpg       # 宽 800
magick input.jpg -resize x600 output.jpg      # 高 600

前面那个 x 是 ImageMagick 里最常见的错误来源。-resize 600 是宽度,只有 -resize x600 才是高度。

做精确尺寸的缩略图且不变形

这是头像、商品图、卡片图真正该用的写法 —— 先缩放到覆盖目标框,再从中心裁掉溢出:

magick input.jpg -resize '400x400^' -gravity center -extent 400x400 output.jpg

这里直接用 -crop 是不行的:比 400×400 还小的图填不满画框。必须先用 ^ 保证覆盖。

只缩小不放大

处理用户上传的标准安全写法:

magick input.jpg -resize '1600x1600>' -quality 85 output.jpg

那个 > 必须加引号。不加的话 shell 会把它当成输出重定向,悄悄吞掉,然后建一个名叫 1600 的空文件 —— 不报错,但结果是错的。

该用哪个缩放操作

  • -resize —— 带滤镜的高质量重采样。默认选它。
  • -thumbnail —— 先快速预缩放再 resize,并自动 -strip。做画廊缩略图最快,但它会丢掉 ICC 色彩描述文件和 EXIF。
  • -scale —— 简单像素平均,不用滤镜。像素图和马赛克效果用它。
  • -sample —— 纯最近邻,只挑像素不做任何混合。

缩小之后要补锐化

任何缩小都会让边缘变软。一个保守的 USM 锐化能找回来,又不会出白边:

magick input.jpg -resize 1200 -unsharp 0x0.75+0.75+0.008 output.jpg

批量缩放整个文件夹

mkdir -p out
for f in *.jpg; do
  magick "$f" -resize '1600x1600>' -quality 85 "out/${f%.*}.jpg"
done

mogrify -resize '1600x1600>' *.jpg 一行就能做同样的事,但它会就地覆盖原文件。要用的话务必加 -path out。上面的生成器里勾「批量模式」可以直接拿到对应 shell 的循环写法。


相关页面

Copied