[iOS]Mac电脑终端用Imagemagick修改图片资源文件的hash值

一、介绍

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。

https://github.com/ImageMagick/ImageMagick

二、安装Imagemagick

1.安装HomeBrew

终端输入指令

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

https://img-blog.csdnimg.cn/609535b8e0a1477a99f86e921076b86d.png

选择源后安装
更多安装方式可以参考安装HomeBrew(100%成功)

2.安装Imagemagick

$ brew install imagemagick

确认是否安装完成

$ magick -version
Version: ImageMagick 7.1.0-52 Q16-HDRI x86_64 20549 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC

三、修改资源文件

官方更详尽的资料:

https://imagemagick.org/script/command-line-processing.php
ImageMagick – Command-line Tools: Magick

1.按比例调整图片大小

a.单图调整

// 语法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

 日志

// 方式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.批量调整

// 语法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 {} \;

日志

// 方式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.裁剪图片

a.单图裁剪

// 语法1 
// 从左上角开始,按目标尺寸为单元格组成网格,网格覆盖原图会裁剪出n张图片。
$ magick a.png -crop 100x100 b.png

// 语法2
// 从左上角开始,裁剪出一张目标图片。
$ magick a.png -crop 100x100+10+5 b.png

日志

// 方式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.批量裁剪

// 语法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 {} \;

日志

// 方式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.转换格式

a.单图转换

$ magick a.png b.jpg

日志

$ magick /Users/gamin/Desktop/pic/original/a.png /Users/gamin/Desktop/pic/new/b.jpg

b.批量转换

// 语法1
// 新图片会重命名
$ cd 资源文件所在目录
$ magick '*.png' b%03d.jpg

// 语法2
// 新图片和原图同样的名称
$ cd 资源文件所在目录
$ magick mogrify -format JPEG *.png

// 语法3
$ cd 原图目录
$ magick mogrify -format JPEG -path 目标目录 *.png

日志

// 方式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.压缩图片

a.单图压缩

$ magick convert -quality 90 -strip a.png b.png

日志

$ magick convert -quality 90 -strip /Users/gamin/Desktop/pic/original/a.png /Users/gamin/Desktop/pic/new/b.png

b.批量压缩

// 语法1
$ cd 资源文件所在目录
$ magick '*.png' -quality 90 b%03d.png

// 语法2
$ cd 资源文件所在目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} -quality 90 {} \;

日志

// 方式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.改变颜色

a.单图改变

// 语法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

日志

// 方式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.批量改变

// 语法1
$ cd 资源图片目录
$ magick '*.png' 具体操作 b%03d.png

// 语法2
$ cd 资源图片目录
$ find . -iname "*.png" -exec echo {} \; -exec convert {} 具体操作 {} \;

日志

$ 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 {} \;

四、验证资源文件hash值是否改变

终端验证图片改变前后hash值是否改变

$ md5 资源文件路径

日志

$ 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

Guess you like

Origin blog.csdn.net/u012881779/article/details/129747222