ImageMagick
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。其全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。
关于ImageMagick,请仔细阅读以下命令行工具的使用方法:
- convert 转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。
- identify 描述一个或较多图像文件的格式和特性。
- mogrify 按规定尺寸制作一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。
- composite 根据一个图片或多个图片组合生成图片。
- montage 创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。
- compare 在算术上和视觉上评估不同的图片及其它的改造图片。
- display 如果你拥有一个X server的系统,它可以按次序的显示图片
- animate 利用X server显示动画图片
- import 在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。
- conjure 解释执行 MSL (Magick Scripting Language) 写的脚本。
GraphicsMagick
GraphicsMagick 它的命令行缩写为 gm
,使用 gm -help
来查看帮助,GraphicsMagick是ImageMagick的一个分支(从 ImageMagick 5.5.2 分支出来的),相对于ImageMagick而言,TA处理速度更快,消耗资源更少,GM的手册非常丰富。
GraphicsMagick能够动态的生成图片,特别适用于互联网的应用。GaphicsMagick不仅支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、Ruby等的调用。
GraphicsMagick的命令与ImageMagick基本是一样的,使用时可以在命令前加上前缀 gm
。
官网:GraphicsMagick Image Processing System
GraphicsMagick的 gm
为创建、比较、转换、编辑和显示图像提供了一套实用程序。所有实用程序都作为单个gm
可执行文件的子命令提供。gm
可执行文件返回退出代码 0
表示成功,或返回1表示失败:
gm animate
动画:在运行X服务器的任何工作站显示器上显示动画(例如GIF文件)。gm batch
批处理:以简单的线性批处理脚本的形式执行任意数量的实用程序命令(例如convert),以提高执行效率,和/或允许在任意脚本或 程序的控制下用作从属共同进程。gm benchmark
基准:在指定的迭代次数或执行时间内执行其他实用程序命令(例如convert),并报告执行时间和其他分析信息,如CPU利用率。 Benchmark提供了各种操作模式,包括使用不同数量的线程执行命令,以及其他报告格式,如逗号分隔值(CSV)。gm compare
比较:比较两个图像并根据指定的度量报告差异统计信息,和/或输出具有差异视觉表示的图像。它还可用于测试图像在特定范围和指 定度量内是否相似,从而向执行环境返回真值。gm composite
合成:合成图像(将图像混合或合并在一起)以创建新图像。gm conjure
魔咒:解释和执行Magick脚本语言(MSL)中的脚本。gm convert
转换:在应用任意数量的图像转换时,使用一种图像格式将输入文件转换为具有相同或不同图像格式的输出文件。gm help
:获取某个命名的使用说明gm display
显示:是独立于机器结构的图像处理和显示设备。它可以在运行X服务器的任何工作站显示器上显示图像。gm identify
标识:描述一个或多个图像文件的格式和特征。它还将报告图像是否不完整或损坏。gm import
导入:从X服务器上的任何可见窗口读取图像,并将其输出为图像文件。您可以捕获单个窗口、整个屏幕或屏幕的任何矩形部分。gm mogrify
变形:变换图像或图像序列。这些变换包括图像缩放、图像旋转、颜色还原等。变形图像覆盖原始图像。gm montage
蒙太奇:通过组合几个独立的图像来创建合成。图像平铺在合成图像上,图像的名称可选地显示在各个平铺的正下方。gm time subcommand
:执行子命令并报告所用的用户、系统和总执行时间。gm version
版本:报告GraphicsMagick发布版本、最大采样深度、版权声明、支持的功能以及生成软件时使用的选项。
ImageMagick图片处理
GraphicsMagick的命令与ImageMagick基本是一样的。
|
|
示例解析:
|
|
处理过程解释:
- 把当前目录 1.jpg 图片文件,从左上角
(0,0)
坐标为起点,裁剪一块 300x300 像素的部分。 - 然后把这部分缩小到 200x200 像素。
- 然后把颜色缩减到100色。
+profile "*"
, 意味着(去除多余信息)在图片文件里不存储Exif信息,以减小图片体积。- 最后生成 1.png,保存在当前目录。
注意:-resize
会试图保留原图的原始长宽比例,因此不一定生成的图片和你指定的尺寸一定匹配,比如,如果 2.jpg 大小是400x200,所以如果用命令:convert 2.jpg -resize 100x100 2.png
,那么生成的图片 2.png 的实际大小是100x50。
常用的参数用途说明:
- crop 宽x高+起点横坐标+起点纵坐标:裁剪图
- resize 宽x高!:改变尺寸,如果使用惊叹号,表示不保留视觉比例,强行改变尺寸匹配给定的宽和高;如果仅给定宽或者高,如"宽x"或"x高"形式的参数(“x高"与"宽x高"的效果是一样的),则以已知参数为基准按比例改变尺寸。
- colors 颜色数:设定图片采用的颜色数,如果是生成 png 或 gif 图片应指定这个参数
- quality 质量:设定jpeg图片输出质量,推荐采用80,此命令仅用于输出格式是jpg的情况,不应省略,省略的话默认质量是95,生成图片过大
+profile "*"
:图片中不存储Exif信息,必须使用,否则生成图片过大,(去除多余信息)
类型转换
|
|
转换为jpg图片会比png图片小
图片缩放和压缩
|
|
|
|
压缩 gif 图片:
|
|
裁剪图片
|
|
旋转图像
convert -rotate 90 input.jpg output.jpg
加边框
|
|
把图片变为黑白颜色
convert -monochrome input.png output.png
图片反色处理
图片反色处理通过 convert 的 negate 参数来实现,同时可以针对制定的区域进行反色。
|
|
注意:regoin参数需要在negate前,否则无法对指定的区域进行反色处理。另外关于gravity参数见下文
添加图片水印处理
|
|
添加英文文字水印
|
|
文字坐标在:10x50
的位置
可以用-font
指定字体,这时需要安装 Ghostscript 字体支持。
如果安装IM、GM时,没有安装Ghostscript字体,会默认使用Linux系统的字体,目录是:/usr/share/fonts/default/Type1/
添加中文文字水印
|
|
生成 Gif
执行如下命令將单帧图片压缩成 gif 图片:
|
|
压缩 gif 图片:
|
|
GraphicsMagick图像处理
|
|
合并图像
|
|
格式转换
|
|
在图像上添加文字
|
|
创建gif图像
|
|
截屏
|
|
保留窗口的边框
|
|
缩放
|
|
调整图像 dpi 和大小
|
|
原始图片是 input.jpg,尺寸:160x120
|
|
官方示例:
格式:
|
|
要制作JPEG图像的缩略图,请使用:
|
|
在此示例中,-size 120x120
向JPEG解码器提示图像将被缩小为120x120
,从而避免了将全分辨率图像返回给GraphicsMagick进行后续的调整大小(resize)操作,从而使其运行得更快。 -resize 120x120
指定输出图像的所需尺寸, 将对其进行缩放,使其最大尺寸为120像素。+profile "*"
会删除输入中可能存在的任何ICM,EXIF,IPTC或其他配置信息,因为缩略图中不需要这些配置信息。
查看帮助
|
|
convert 是主要命令,查看 convert 帮助的步骤:
- gm convert 先在这里查看相应的选项,找到选项后
点击选项
可以查看更详细的选项说明。
几个重要的选项
格式:
-geometry <width>x<height>{+-}<x>{+-}<y>{%}{@}{!}{^}{<}{>}
默认情况下,宽度和高度是最大值。也就是说,在保持图像的纵横比的同时,图像被扩展或收缩以适合宽度和高度值。
将^附加到 geometry,以便在调整图像大小时保持图像纵横比,但生成的宽度或高度将被视为最小值而不是最大值。
附加一个!(感叹号)指向几何体以强制图像大小与指定的大小完全相同。例如,如果指定640x480!图像宽度设置为640像素,高度设置为480像素。
如果只指定了宽度,而没有尾随的"x”,则将"高度"设置为"宽度"(例如,-geometry 100与-geometry 100x 100相同)。如果仅指定了宽度,但使用了尾随的"x",则宽度将采用该值,而高度将被选择以保持图像的纵横比。类似地,如果仅以"x"(例如-geometry x256)作为前缀指定高度,则选择宽度以保持纵横比。
要指定百分比宽度或高度,请追加%。图像大小乘以宽度和高度百分比以获得最终图像尺寸。要增大图像的大小,请使用大于100的值(例如125%)。要减小图像的大小,请使用小于100的百分比。
使用@以像素为单位指定图像的最大区域。
仅当图像的宽度或高度超过几何体规范时,使用>更改图像的尺寸。<仅当图像的两个尺寸都小于几何图形规格时,才调整图像的大小。例如,如果指定"640x480>",并且图像大小为256x256,则图像大小不会更改。但是,如果图像是512x512或1024x1024,则将其大小调整为480x480。将几何体规范括在引号中,以防止外壳程序将<
或 >
解释为文件重定向。
当用作convert、import或mogrify命令时,-geometry
与-resize
同义,并指定输出图像的大小。偏移量(如果存在)将被忽略。
格式
-size <width>x<height>{+offset}
使用此选项可以指定原始图像的宽度和高度。一般这些原始图像的 GREY,RGB或CMYK尺寸是未知的。
图像压缩的类型
格式
-compress <type>
选项包括:None, BZip, Fax, Group3, Group4, JPEG, Lossless, LZW, RLE, Zip, LZMA, JPEG2000, JPEG2000, JBIG, JBIG2, WebP, 和 ZSTD
指定为 +compress
表示以未压缩的格式存储二进制图像。 默认值为指定图像文件的压缩类型。
“Lossless
” 是指无损JPEG,仅当已修补JPEG库以支持它时才可用。 通常不建议使用无损JPEG。
使用 -quality
选项可以设置JPEG,JPEG-2000,PNG,MIFF,MPEG和TIFF编码器要使用的压缩级别。 使用 -sampling-factor
选项可以设置DPX,JPEG,MPEG和YUV编码器用于对色度通道进行下采样的采样因子。
JPEG / MIFF / PNG / TIFF压缩等级(这里 quality 翻译为质量)
格式:
-quality <value>
对于JPEG和MPEG图像格式,质量(quality )为0(最低图像质量和最高压缩率)到100(最佳质量但有效压缩率最低)。 默认质量为75。使用-sampling-factor
选项可以指定色度下采样的因子。 要使用与JPEG解码器相同的质量值,请使用 -define jpeg:preserve-settings
标志。
对于MIFF图像格式以及使用ZIP压缩时的TIFF格式,quality/10
是zlib压缩级别,从0(最坏但最快的压缩)到9(最佳但最慢的压缩)。 由于压缩始终是无损的,因此它对图像外观没有影响。
对于JPEG-2000图像格式,质量使用非线性方程式映射到Jasper库所需的压缩率。 该非线性方程式旨在粗略估计JPEG v1格式提供的质量。 默认质量值75导致请求 16:1
压缩。 质量值100导致要求进行无损压缩。
对于MNG和PNG图像格式,质量值设置zlib压缩级别(quality / 10
)和过滤器类型(quality % 10
)。 压缩级别从0(最快压缩)到100(最佳但最慢)。 对于0级压缩,使用仅霍夫曼策略,这是最快的,但不一定是最坏的压缩。
如果filter-type(过滤类型)为4或更小,则指定的filter-type用于所有扫描线(scanlines):
0: none
1: sub
2: up
3: average
4: Paeth
如果filter-type为5,则当质量大于50并且图像没有颜色图时使用自适应滤波,否则不使用滤波。
如果filter-type为6,则使用具有最小绝对值之和的自适应过滤。
仅当输出为MNG时,如果过滤器类型为7,则使用LOCO颜色转换和具有最小绝对值之和的自适应过滤。
默认值为75,这意味着使用自适应滤波几乎可获得最佳压缩效果。 由于压缩始终是无损的,因此质量设置对PNG和MNG图像的外观没有影响。
有关更多信息,请参见PNG规范。
使用像素采样缩放图像
有关 geometry 规范的详细信息,请参见-geometry
。如果存在-filter
选项,则-sample
将忽略-filter
。偏移(如果存在于-geometry
中)将被忽略,-gravity
选项不起作用。
-thumbnail
调整图像大小(快速)
格式:
-thumbnail <width>x<height>{%}{@}{!}{<}{>}
-thumbnail
尽可能快地调整图像大小,而不是图像质量,因此更关注速度。 无论如何,由此产生的图像质量对于许多用途应该是可以接受的。 它主要用于生成较小版本的图像,但也可以用于放大图像。 -thumbnail geometry
参数遵循与-resize
相同的语法和规则(而 -resize
与 -geometry
相同 )。
将ICM,IPTC或通用配置文件(profile)添加到映像
格式:
-profile <filename>
-profile filename
将ICM(ICC颜色管理),IPTC(通讯信息)或通用(包括Exif)profile 添加到图像
使用 +profile icm
, +profile iptc
, 或 +profile profile_name
删除相应的配置文件。 可能会列出多个配置文件,以逗号分隔。 可以通过在名称之前加上一个感叹号来将其从随后列出的匹配项中排除。 例如,+profile '!icm,*'
将除去ICM配置文件以外的所有配置文件。 使用identify -verbose
查找图像文件中的配置文件。 使用 +profile "*"
删除所有配置文件。
将图像写入不支持配置文件的格式当然也会导致所有配置文件被删除。 JPEG和PNG格式将存储已读取但未删除的所有配置文件。 在JPEG中,它们存储在APP1标记中,在PNG中,它们以十六进制编码的二进制形式存储在压缩的zTXt块中,除了iCC块存储在iCCP块中。
要提取配置文件,不使用-profile
选项。 相反,只需将文件写入图像格式,例如APP1、8BIM,ICM或IPTC。例如,要提取Exif数据(存储在APP1配置文件的JPEG文件中),请使用
gm convert cockatoo.jpg exifdata.app1
请注意,GraphicsMagick不会尝试更新任何配置文件以反映对图像所做的更改,例如,从纵向旋转到横向,因此保留的配置文件可能包含无效数据。
使用google的guetzli压缩图片
google/guetzli: Perceptual JPEG encoder
请注意,Guetzli旨在用于高品质图像。您应该始终倾向于提供未压缩的图像(例如尚未使用任何JPEG编码器压缩的图像,包括Guetzli)。
利用ffmpeg将mp4转换为gif
方法一: 直接将视频转换为gif
|
|
方法二: 先转换为图片,再利用convert转换为 gif
|
|
在第一步时指定目录:
|
|
资料
ImageMagick资料
GraphicsMagick资料
命令行参数,说明文档
其他