Skip to content
MagickCmd报错 › convert: command not found(或提示 convert 已弃用)

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 6ImageMagick 7
convert in.jpg out.pngmagick in.jpg out.png
identify in.jpgmagick identify in.jpg
mogrify -resize 50% *.jpgmagick mogrify -resize 50% *.jpg
montage *.jpg sheet.jpgmagick montage *.jpg sheet.jpg
composite a.png b.png o.pngmagick composite a.png b.png o.png
compare a.png b.png d.pngmagick 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 上行为更一致。

相关页面

Copied