imagemagick压缩图片-iOS 马甲包 图片md5值修改
ImageMagick命令行使用方法

ImageMagick 的
命令行
由下面这些元素构成:
一个, 或多个文件名.
零个, 一个, 或多个图像设置项.
零个, 一个, 或多个图像操作项.
零个, 一个, 或多个图像序列操作项.
零个, 一个, 或多个图像组.
零个, 或一个图像输出名(convert, composite, montage, compare, import, conjure).
ImageMagick 扩展了“输入文件名”它原本的含义, 现在它包括了:
文件名
通配符
.
明确的图片格式.
内置图像或图案.
标准的输入输出, 文件描述符.
选取图片的某些帧.
选择图片部分区域.
缩放了的内嵌图像.
裁切了的内嵌图像.
文件名引用.
在 Unix shell 环境下, 有一些特殊的字符是作为通配符使用的, 如 * 和 ? . ImageMagick 在各个平台上都支持文件名通配符. 假如你想把某目录下的 1.jpg, 2.jpg, 3,jpg, 4.jpg 和 5.jpg 这些文件转成一个 GIF 动画, 那么你可以使用这条命令方便地引用所有的 JPEG 文件:
图像的数据, 都是以一种确定的格式存储的, 比如常见的 JPEG, PNG, TIFF 等. ImageMagick 在读取, 解析图片之前, 必须要知道图片的格式.
多数图像格式, 在文件中都设有一些标识来表明它属于哪种格式. 如果没有, ImageMagick 会根据文件的扩展名来判断. 如 会告诉 ImageMagick 这是一张 JPEG 格式的图片. 某些情况下, ImageMagick 不知道图片的格式, 那么这时就需要手动指定了. 如, 我们有一张名为 image , 存储了 RGB 三原色位深原始信息的图片(未经过任何压缩的位图), ImageMagick 当然无法自己得知它是什么格式的图片, 所以, 这时就需要我们明确指定图片格式.
ImageMagick 有许多内置的图像和图案, 要使用 checkerboard 中的图案:
Unix 和 Windows 都支持通过管道来重定向输入输出. ImageMagick 支持从标准的输入输出流中读写图像数据, 由依次使用一个虚文件名 ‑ 来实现. 下面的例子把 convert 的输出通过管道重定向到了 display .
第二个用于确定图像格式的 gif: 是可选的, 因为 GIF 这种格式有自己的标识, ImageMagick 认识它. convert 同样能以这种方式接受标准输入:
其它的一些管道, 你可以通过它们的文件描述符来访问. 文件描述符0, 1, 2已经被预定义为标准输入, 标准输出, 错误输出. 如果一个管道被指定为文件描述符 N, 那么你可以通过 fd:N 来使用它. 下一个例子展示了如何通过管道重定向, 把文件描述符3, 4的数据添加到文件描述符5中.
ImageMagick 6.4.9-3 中才添加了对文件描述符的支持.
对于 Python, 你可以通过调用 File 对象的 fileno() 方法来获取文件描述符.
在需要的时候, 你也可以为文件描述符指定具体的图像格式:
某些图片格式可以包括有多个图像帧. 你可以只获取第一帧, 最后一帧, 或中间的某些帧. 为此, 你可以在文件名之后, 以
方括号
括起来的形式指定帧. 下面的例子中, 对于一个有多帧的 GIF 图片, 我们只取其第一帧.
在 Unix shell 的环境下, 一般
中括号
是会被转义的, 所以, 我们需要使用
单引号
把文件名引起来. Windows 的命令行环境下不用单引号也可以, 但多写一对单引号并不会有什么问题. 另外, 对于单引号和双引号的作用, 在 Unix 和 Windows 这两个平台上, 常常是相反的, 所以, 如果你使用 Windows ,那么请注意将我们例子中的单引号改为双引号.
你也可以一次获取多帧, 在方括号中标出一个范围即可, 如下面的例子, 我们获取了前四帧的图像:
最后, 你可以一次获取非连接的多帧. 下面的命令以3,2,4的顺序获取图像:
注意上面的最后两个命令, 输出被写入了一个类型为 MNG 的文件当中. 因为 MNG 支持保存多帧图像, 而如 JPG 之类的格式只是保存单帧的图像. 在下面“图像输出名”一节我们还会介绍这方面的内容.
最原始的位图图像, 就是一个表示出各像素点颜色的序列, 它的文件中没有任何的其它像宽, 高, 格式标识等附加信息. 对于这类原始的图像数据, 在处理时我们必须明确指定图像的宽和高, 或者给出一个范围. 在下面的例子中, 我们要处理的图片是一个8位的 RGB 位图, 宽是 6000, 高为 4000, 而我们只需要获取一块中心附近 600×400 的图像信息.
使用 ‑extract 选项也可以实现相同的功能:
读入一些图片的同时, 重新定义它们的尺寸是很方便的. 假设你有很多的大的 JPEG 图片需要转换成一组 PNG 格式的缩略图:
这里, 所以的图片都会被读入并且分别被重定义大小. 在读入的同时定义尺寸在效率上更好, 同时资源占用也更少:
同上.
靠一个另外的文件名, 来表示实际要读取的图像文件名, 实现这个功能有两种方法, 第一种方法是使用 @ 这个符号, 来指定一个文件, 这个文件中包含有实际需要读取的图像文件名, 如一个名为 的文本文件中有如下内容:
下面的命令, ImageMagick 就会读入 , , .
另一种方法, 是在文件名中使用格式化字符串, 然后在后面的方括号中指定一个范围. 看下面的例子:
ImageMagick 实际上会去读取如下的图像:
命令行中的一个设置项, 可以作用于读入的图像, 图像操作, 或者将会被输出的图像. 一个设置项被设置后会一直发挥作用除非它被重置或命令执行完毕. 图像设置命令包括有:
下面例子中的 ‑channel 会被作用于每一个图像, 就像我们说的那样, 设置项会持续起作用.
图像操作项与图像设置项不同, 它只作用于紧接着存在的一个图像, 仅仅是这一个图像, 之后, 图像操作项就会失效. 在这里, 我们说明一下. 命令行参数有三种, 前面讲过的图像设置项, 这里的图像操作项, 以及后面会讲到的序列操作项. 图像操作项包括下面这些.
下面例子, ‑negate 这项只对 wand 有效, 对 wizard 是无效的(但是, 如果把它放在 wizard 后的话, 则会作用于这两张图).
一个图像序列操作项, 只作用于紧接着存在的一个图像序列, 它们是.
许多命令行选项都有一个 geometry 参数, 用于指定图像的宽, 高等信息. 因为图像的
坐标系
, 尺寸, 位置等信息是我们经常会用到的, 所以为了方便, geometry 这个参数可以用不同的格式给出. 关于这点, 接下来我们会详细地介绍.
一些命令行选项可接受如下多种格式的 geometry 参数. 请记住, 它们处理具体参数时的效果是不同的, 详细的内容可查阅它们各个的说明文档.
geometry 参数可以使用下表列出的多种格式指定. 最常用的一种格式是 size[offset] , 意为 size 是必须给出的, 而 offset 则是可选的. 不过, 有时 [size]offset 也行. 同时要注意, geometry 这个参数中, 绝不允许出现空格符.
下面展示了一些简单的例子, 用以说明如何给出 ‑resize 的 geometry 参数. 我们将使用内置的 logo: 这张图作为我们的“输入图像”. logo: 这张原始图片宽为640像素, 高480像素, 记为 640×480. 就像你看到的, 宽总在高的前面. 这条规则同样适用于我们可能会讲到的“坐标”或“偏移”.
看一些例子:
(@的作用前面已经提到过了)
请注意引号的使用. 上面的例子, 包括后面的例子中, 我们都使用引号把 geometry 引起来了的. 很多时候, 这样做不是必须的, 但当你使用了 < 和 > 的时候, 就一定要使用引号, 否则这两个符号会被当成命令行的重定向操作处理. 另外, 在 Windows 平台上, ^ 也必须使用引号. 所以, 为了安全起见, 我们最好养成对于 geometry 总是使用引号的习惯.
我们通过一些例子来说明 geometry 参数中的 offsets. 使用它的一个典型情形是在 ‑region 这个选项中. ‑region 跟在一些其它的命令后, 用于指定一块矩形区域. 所以, 你除了需要指定这个矩形区域的宽和高, 还需要指定它的一个起始点(左上角的点). 下面的第一个例子中, 我们指定了一个 100×200 的区域, 位置在 x=10, y=20, 或者我们应该写成 (x,y) = (10,20).
注意, offsets 必须带上 +/‑. 它表示的是一个相对偏移, 而不是一个绝对坐标. offsets 的参照点不是固定的, 但默认情况下, 它是 (0,0), 即左上角, 上面的第一个例子就是这种情况.
offsets 有可能“出界”, 就像第二个例子中的那样, -10+20, 对于这个有一部分出界的矩形执行 ‑negate, 实际的效果也就相当于 90×200+0+20.
第三个例子中, 一来就使用了 ‑gravity 选项, 它把当前坐标原点(或叫参照原点)设置为图像的正中, 即 (320,240) 的位置, 因为这张图的尺寸是 640×480. 这意味着后面的 offsets 的实际效果与前面两例就有所不同, 变成了 (320-10, 240+20) = (310,260). 同时 100×200 也不再是根据左上角来计算, 而是根据中心点计算. 即以 (310,260) 为中心的一个 100×200 的矩形. 显然, 它的左上角在 (310-50,260-100) = (260,160).
它让你在一个隔离的组中处理一张图像或一个图像序列, 处理完后, 把结果返回到正常流程中. 图像组用一对括号标示, 里面的所有操作只对当前组有效. 如下例, 我们限制 ‑rotate 操作只对 有效:
特别注意, 在 Unix 平台下, 用于图像组的括号是需要使用 \ 转义的, 因为小括号在 shell 中有其它的特殊作用. 但是, Windows 平台下的小括号不需要转义. 另外, 在小括号内的两侧, 都有一个空格, 请留意.
前面我们已经谈到了一些命令行中的操作项, 不过, 下面这几个操作项对于处理一个图像组是比较常用的:
上面几个操作项的参数, 都是一个索引值, 用以表示在图像组中的某个图像. 图像组中的第一个图像的索引值是 0. 同时, 这个索引值你也可以使用负数, -1 就是图像组中的最后一个图像.
ImageMagick 扩展了原来的“输出文件名”的概念, 在 ImageMagick 中, 一个图像输出可以是:
一种明确的图像格式.
输出到系统的标准输出.
文件名引用.
图像信息都是以某种即定的格式存储起来的, 这些格式包括我们熟悉的 JPEG, PNG, TIFF 等. ImageMagick 在写出某个图像时, 必须知道应该使用哪一种格式写出. 通常情况下, ImageMagick 可以根据扩展名来判断格式, 如, 对于 ImageMagick 会以 JPEG 格式来写出. 某些情况下没有给出图像的格式信息, 而你又没有明确指定, 这时, ImageMagick 会以图像原来的格式写出. 比如, 我们希望把图像存为名为 image 的原始 RGB 位图:
Unix 支持通过管道在各个程序间重定向输入输出. ImageMagick 可以使用一个特殊的文件名 ‑ 来实现管道间的重定向操作. 下面的例子中, 我们把 convert 的输出重定向到 display 中:
这里, 你不一定要明确指定图像格式, GIF 这种格式有它自己的标示, ImageMagick 可以自动正确地识别出.
另外还有一种输出方式, 是使用格式化字符串来输出多个图像. 假如我们把输出图像名写成 image‑%d.jpg , 同时我们的图像序列中有 3 个图像, 那么会得到如下的多个输出结果:
还有一种情况, 假如你希望用图像的某些属性来作为其文件名的一部分, 那么可以这样:
其结果是:
iOS 马甲包 图片md5值修改

一、批量修改md5值
ImageOptim Mac 下无损压缩图片工具,将包含图片的文件夹拖入工具,会自动扫描文件夹下的所有文件,自动选择最优算法进行优化。一般第一次优化项目时,会有几M到10几M的优化效果。
ImageMagick ImageMagick: 是一款创建、编辑、合成,转换图像的命令行工具。 通过 brew 安装 imagemagick
brew install imagemagick
压缩文件夹下所有 png 文件,会修改 md5 值 ,进入存放图片的文件夹,运行命令即可
cd 文件路径find . -iname "*.png" -exec echo {} \; -exec convert {} {} \;
二、单个修改md5值(mp4等类型)
(1)查看 md5 值
打开 Terminal (终端),输入「md5」,空格,文件路径,最终命令类似于:
//方式一md5 文件路径//方式二cd 文件路径md5 4//方式三md5-q 文件路径
(2)修改 md5 值
修改文件的md5值命令,输入echo 任意字符 >> 文件路径,最终命令类似于:
echo xxx >> 文件路径
记一次使用 ImageMagick 裁剪图片的案例

@标签 ImageMagick convert shave crop
最近需要向 Chrome web store 提交指定尺寸为 1280x800 的图片,说起来是个简单的事情,可是准备图片的过程还是给我带来了很大麻烦。
我在 Ubuntu 系统上采用 Flameshot 来截图,可是我很难控制截出来的图片尺寸:虽然可以拖动截取边框来调整大小,但只有当我停止拖动的时候才会显示当前的尺寸,拖动过程中没有实时反馈;另外我发现我几乎无法控制我的鼠标使得每次拖动只改变一像素的大小,不停的在目标值上下徘徊,为了截一张图片搞得想哭。????
有时干脆放弃,直接整屏截图,然后上 GIMP 裁剪,这个方法实在笨重 ???? 而且无法批量操作。
今天我又来斗争了,先是给 Flameshot 提了个 issue , 期待能有所改进吧。
然后我开始研究如何先截取一个尺寸稍大于目标尺寸的图片,然后经过命令行快速处理得到目标图片。
案例:原始图片尺寸为 1306x881,目标尺寸为 1280x800,要求水平方向居中裁剪,垂直方向从顶端开始切割,尾端多余部分丢弃。
上面命令参数中的 13 等于 (1306-1280)/2 , 如果原始图片宽度不是偶数就尴尬了,所以截图的时候注意一下。
另外由于我们每次截取的原始图片的宽度都可能不同,如果需要批量化操作,应该更加智能一点:
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注