convert: command not found(或提示 convert 已弃用)
ImageMagick 7 把 convert 改名成了 magick。如何判断自己装的是哪个版本、IM6 到 IM7 的完整命令对照,以及 Windows 上的同名程序冲突。
你从教程里抄了一条命令,然后得到下面之一:
bash: convert: command not found
convert: the convert command is deprecated in IMv7, use "magick" instead
或者在 Windows 上,一堆莫名其妙的关于磁盘卷的报错。
发生了什么变化
ImageMagick 7 把原来那一堆程序整合成了一个 magick 入口。convert 在大多数 IM7 版本里作为兼容层保留,会打印弃用警告 —— 有些发行版干脆就不装它了。
2021 年之前写的 ImageMagick 教程几乎全都用 convert,这就是为什么这是大家遇到的第一个报错。
你装的是哪个版本
magick -version # 有输出 → 你是 IM7
convert -version # 只有这个有输出 → 你是 IM6
对照表
| ImageMagick 6 | ImageMagick 7 |
|---|---|
convert in.jpg out.png | magick in.jpg out.png |
identify in.jpg | magick identify in.jpg |
mogrify -resize 50% *.jpg | magick mogrify -resize 50% *.jpg |
montage *.jpg sheet.jpg | magick montage *.jpg sheet.jpg |
composite a.png b.png o.png | magick composite a.png b.png o.png |
compare a.png b.png d.png | magick compare a.png b.png d.png |
参数本身几乎完全没变,实际上你只是换了个程序名。
Windows 上那个特别坑的地方
Windows 系统自带一个 convert.exe,在 System32 里,用途是把 FAT 分区转成 NTFS。如果 ImageMagick 的目录在 PATH 里排在 System32 后面,你敲 convert 跑的就是微软那个工具,然后收到一堆关于盘符和文件系统的报错,跟图片毫无关系。
这个命名冲突也是 IM7 改名的原因之一。在 Windows 上请一律用 magick。
安装 ImageMagick 7
brew install imagemagick # macOS,装的就是 IM7
dnf install ImageMagick # Fedora,IM7
pacman -S imagemagick # Arch,IM7
Debian 和 Ubuntu 的默认源里 imagemagick 这个包仍然是版本 6。Ubuntu 24.04 及以后也提供 imagemagick-7.q16。除此之外,官方的 AppImage 是不用编译就能拿到 IM7 的最简单方式:
wget https://imagemagick.org/archive/binaries/magick
chmod +x magick
./magick -version
让老脚本在 IM7 上继续能跑
如果你有一堆用 convert 的脚本,别名只能覆盖交互式使用,脚本里不生效:
alias convert='magick'
脚本请在 PATH 里放一个转发脚本,更可靠:
printf '#!/bin/sh\nexec magick "$@"\n' > /usr/local/bin/convert
chmod +x /usr/local/bin/convert
IM7 的其他实际差别
- IM7 默认在线性 RGB 下运算,同样的参数出来的像素可能和 IM6 略有不同。
-crop 16:9这种比例写法只有 IM7 支持。- IM7 的
-define对 AVIF 和 HEIC 的支持更全。 -format字符串里的百分号转义在 IM7 上行为更一致。