1. Introducción
ImageMagick es un software gratuito para crear, editar y combinar imágenes. Puede leer, convertir y escribir imágenes en varios formatos. Corte de imagen, reemplazo de color, aplicación de varios efectos, rotación de imagen, combinación, texto, líneas rectas, polígonos, elipses, curvas, estiramiento y rotación adjunta a imágenes. ImageMagick es un software gratuito: todos los códigos fuente son abiertos, de uso, copia, modificación y distribución gratuitos. Cumple con el acuerdo de licencia GPL y puede ejecutarse en la mayoría de los sistemas operativos. La mayoría de las funciones de ImageMagick provienen de herramientas de línea de comandos.
https://github.com/ImageMagick/ImageMagick
2. Instalar Imagemagick
1. Instalar HomeBrew
comando de entrada de terminal
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
https://img-blog.csdnimg.cn/609535b8e0a1477a99f86e921076b86d.png
Seleccione la fuente e instálela.
Para obtener más métodos de instalación, consulte Instalación de HomeBrew (100 % correcto)
2. Instalar Imagemagick
$ brew install imagemagick
Confirme si la instalación está completa
$ magick -version
Version: ImageMagick 7.1.0-52 Q16-HDRI x86_64 20549 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
3. Modificar archivos de recursos
Información oficial más detallada:
https://imagemagick.org/script/command-line-processing.php
ImageMagick – Herramientas de línea de comandos: Magick
1. Cambiar el tamaño de la imagen proporcionalmente
A. Ajuste de imagen única
// 语法1
// 调整尺寸为原图的150%
$ magick a.png -resize 150% b.png
// 语法2
$ magick convert a.png -resize 150% b.png
// 语法3
$ magick convert -resize 150% a.png b.png
// 语法4
// 按照限定尺寸调整图片大小。并不是将图裁剪成100x100,而是保持原图比例调整到能放入100x100的框子中。
$ magick a.png -resize 100x100 b.png
registro
// 方式1
$ magick /Users/gamin/Desktop/pic/original/a.png -resize 150% /Users/gamin/Desktop/pic/new/b.png
// 方式2
$ magick convert /Users/gamin/Desktop/pic/original/a.png -resize 150% /Users/gamin/Desktop/pic/new/b.png
// 方式3
$ magick convert -resize 150% /Users/gamin/Desktop/pic/original/a.png /Users/gamin/Desktop/pic/new/b.png
// 方式4
$ magick /Users/gamin/Desktop/pic/original/a.png -resize 100x100 /Users/gamin/Desktop/pic/new/b.png
B. Ajuste por lotes
// 语法1
// 这种方式会重命名新图片
$ cd 资源文件所在目录
$ magick '*.png' -resize 105% b%03d.png
// 语法2
// 这种方式新图会保持原图同样的名称
$ cd 资源文件所在目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -resize 105% {} \;
// 语法3
// 按照限定尺寸调整图片大小。并不是将图裁剪成100x100,而是保持原图比例调整到能放入100x100的框子中。
$ cd 资源文件所在目录
$ magick '*.png' -resize 100x100 b%03d.png
// 语法4
$ cd 资源文件所在目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -resize 100x100 {} \;
registro
// 方式1
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' -resize 105% /Users/gamin/Desktop/pic/new/b%03d.png
// 方式2
$ cd /Users/gamin/Desktop/pic/new
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -resize 105% {} \;
// 方式3
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' -resize 100x100 /Users/gamin/Desktop/pic/new/b%03d.png
// 方式4
$ cd /Users/gamin/Desktop/pic/new
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -resize 100x100 {} \;
2. Recorta la imagen
A. Recorte de una sola imagen
// 语法1
// 从左上角开始,按目标尺寸为单元格组成网格,网格覆盖原图会裁剪出n张图片。
$ magick a.png -crop 100x100 b.png
// 语法2
// 从左上角开始,裁剪出一张目标图片。
$ magick a.png -crop 100x100+10+5 b.png
registro
// 方式1
$ magick /Users/gamin/Desktop/pic/original/a.png -crop 100x100 /Users/gamin/Desktop/pic/new/b.png
// 方式2
$ magick /Users/gamin/Desktop/pic/original/a.png -crop 100x100+10+5 /Users/gamin/Desktop/pic/new/b.png
B. Recorte por lotes
// 语法1
// 会重命名新图片
// 从左上角开始,每张图会裁剪出n张目标图片。
$ cd 资源文件所在目录
$ magick '*.png' -crop 100x100 b%03d.png
// 语法2
// 新图会和原图同名称
$ cd 资源文件所在目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -crop 100x100 {} \;
// 语法3
// 从左上角开始,每张图裁剪出一个目标图片。
$ cd 资源文件所在目录
$ magick '*.png' -crop 100x100+10+5 b%03d.png
// 语法4
$ cd 资源文件所在目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -crop 100x100+10+5 {} \;
registro
// 方式1
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' -crop 100x100 /Users/gamin/Desktop/pic/new/b%03d.png
// 方式2
$ cd /Users/gamin/Desktop/pic/new
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -crop 100x100 {} \;
// 方式3
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' -crop 100x100+10+5 /Users/gamin/Desktop/pic/new/b%03d.png
// 方式4
$ cd /Users/gamin/Desktop/pic/new
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -crop 100x100+10+5 {} \;
3. Convertir formato
A. Conversión de una sola imagen
$ magick a.png b.jpg
registro
$ magick /Users/gamin/Desktop/pic/original/a.png /Users/gamin/Desktop/pic/new/b.jpg
B. Conversión por lotes
// 语法1
// 新图片会重命名
$ cd 资源文件所在目录
$ magick '*.png' b%03d.jpg
// 语法2
// 新图片和原图同样的名称
$ cd 资源文件所在目录
$ magick mogrify -format JPEG *.png
// 语法3
$ cd 原图目录
$ magick mogrify -format JPEG -path 目标目录 *.png
registro
// 方式1
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' /Users/gamin/Desktop/pic/new/b%03d.jpg
// 方式2
$ cd /Users/gamin/Desktop/pic/new
$ magick mogrify -format JPEG *.png
// 方式3
$ cd /Users/gamin/Desktop/pic/original
$ magick mogrify -format JPEG -path /Users/gamin/Desktop/pic/new *.png
4. Comprimir imágenes
A. Compresión de una sola imagen
$ magick convert -quality 90 -strip a.png b.png
registro
$ magick convert -quality 90 -strip /Users/gamin/Desktop/pic/original/a.png /Users/gamin/Desktop/pic/new/b.png
B. Compresión por lotes
// 语法1
$ cd 资源文件所在目录
$ magick '*.png' -quality 90 b%03d.png
// 语法2
$ cd 资源文件所在目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -quality 90 {} \;
registro
// 方式1
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' -quality 90 /Users/gamin/Desktop/pic/new/b%03d.png
// 方式2
$ cd /Users/gamin/Desktop/pic/new
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -quality 90 {} \;
5. Cambiar de color
A. Cambio de imagen única
// 语法1
// 只适合纯色图片,不影响alpha通道。
$ convert a.png -fill '#000000' -colorize 100 b.png
// 语法2
// 适合多种颜色组成的图片
$ convert -fuzz 40% a.png -fill '#FE003E' -opaque "#19916d" b.png
// 语法3
// 可以设置背景色
$ convert a.png +level-colors '#19916d', '#FE003E' b.png
$ convert a.png +level-colors '#19916d00', '#19916d' b.png
// 语法4
$ convert a.png -fuzz 25% -fill none -background '#FE003E' -flatten b.png
$ convert a.png -fuzz 25% -fill none -background '#FE003E00' -flatten b.png
registro
// 方式1
$ convert /Users/gamin/Desktop/pic/original/a.png -fill '#000000' -colorize 100 /Users/gamin/Desktop/pic/new/b.png
// 方式2
$ convert -fuzz 40% /Users/gamin/Desktop/pic/original/a.png -fill '#FE003E' -opaque "#19916d" /Users/gamin/Desktop/pic/new/b.png
// 方式3
$ convert /Users/gamin/Desktop/pic/original/a.png +level-colors '#19916d', '#FE003E' /Users/gamin/Desktop/pic/new/b18.png
$ convert /Users/gamin/Desktop/pic/original/a.png +level-colors '#19916d00', '#19916d' /Users/gamin/Desktop/pic/new/b20.png
// 方式4
$ convert /Users/gamin/Desktop/pic/original/a.png -fuzz 25% -fill none -background '#FE003E' -flatten /Users/gamin/Desktop/pic/new/b.png
$ convert /Users/gamin/Desktop/pic/original/a.png -fuzz 25% -fill none -background '#FE003E00' -flatten /Users/gamin/Desktop/pic/new/b.png
B. Cambio de lote
// 语法1
$ cd 资源图片目录
$ magick '*.png' 具体操作 b%03d.png
// 语法2
$ cd 资源图片目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} 具体操作 {} \;
registro
$ cd /Users/gamin/Desktop/pic/original
$ magick '*.png' -fill '#000000' -colorize 100 /Users/gamin/Desktop/pic/new/b%03d.png
$ cd /Users/gamin/Desktop/pic/new
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -fill '#000000' -colorize 100 {} \;
4. Verifique si el valor hash del archivo de recursos ha cambiado
El terminal verifica si el valor hash ha cambiado antes y después de cambiar la imagen.
$ md5 资源文件路径
registro
$ md5 /Users/gamin/Desktop/pic/original/a.png
MD5 (/Users/gamin/Desktop/pic/original/a.png) = 1b195e7bab6d1cf39b573f44c8504e8e
$ md5 /Users/gamin/Desktop/pic/new/a.png
MD5 (/Users/gamin/Desktop/pic/new/a.png) = 8106f267e0871b43ae8282c746e61a7a