使用 ImageMagick 命令行工具处理图像指南
Published: 2024-07-09 10:13:34


ImageMagick 是一款免费的开源命令行工具，允许用户执行各种图像处理任务，例如图像转换、调整大小、裁剪、旋转、添加效果等。它支持多种图像格式，可在 Linux、Windows 和 macOS 上使用。在本教程中，我们将介绍 ImageMagick 中一些最常见的命令和选项。本文同步发布在[我的博客](https://blog.eimoon.com/p/image-processing-with-imagemagick-guide/)

## 一、安装
在我们开始之前，你需要在系统上安装 **ImageMagick**,你可以从[官方网站](https://imagemagick.org/)下载它。
### 1.mac上安装
在mac上使用homebrew安装即可。
```shell 
brew install imagemagick
```

### 2.windows上安装
在windows上安装先查看的系统,查看  **设置--系统--系统信息**,
除非您使用的是 Windows 32 位操作系统，否则建议 64 位 Windows 上使用以下版本的 ImageMagick：**ImageMagick-7.1.1-34-Q16-HDRI-x64-dll.exe**,安装方式和其他软件一样,基本上是下一步下一步即可。
[下载地址](https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-34-Q16-HDRI-x64-dll.exe)


如果你喜欢便携版本,也可以下载免安装的版本,根据系统不同在[这里选择](https://imagemagick.org/script/download.php)你的便携包。
例如: 你的系统是x64位，使用每像素 16 位组件, 则选择 
**ImageMagick-7.1.1-34-portable-Q16-x64.zip**
下载解压到你的文件夹使用。
[下载地址](https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-34-portable-Q16-x64.zip)

### 3.检查安装

要检查它是否已安装，请打开终端并运行:
```shell
magick --version
```
如果您看到类似下面的输出，那么您就代表安装好了！
```shell
Version: ImageMagick 7.1.1-34 Q16-HDRI aarch64 22301 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(5.0)
Delegates (built-in): bzlib fontconfig freetype gslib heic jng jp2 jpeg jxl lcms lqr ltdl lzma openexr png ps raw tiff webp xml zlib zstd
Compiler: gcc (4.2)
```
## 二、基本命令
ImageMagick 拥有众多功能和能力。我将重点介绍我日常的使用一些功能,处理一些简单、实用的用例，但实际上，我们只是触及了此工具的表面。还有更多操作可以查看官方文档。

### 1.查看图片信息

在使用之前我们先了解一下检查图片信息的命令,使用 **magick identify** 检查你的图片信息。
```shell
 magick identify tiger.jpg
 ```
 输出
 ```shell
tiger.jpg JPEG 1280x853 1280x853+0+0 8-bit sRGB 279261B 0.000u 0:00.000
```
各个参数的代表的意义：
* tiger.webp:文件名。
* WEBP:图像格式（WEBP）。
* 1280x853:图像的维度，宽度为800像素，高度为400像素。
* 1280x853+0+0:图像维度和偏移量。
* 1280x853 表示图像的宽度和高度。
* +0+0 表示图像的偏移量（起始点位置），在这里表示没有偏移（从左上角开始）。
* 8-bit:每个颜色通道的位深度（这里是8位）。
* sRGB:图像的颜色空间（标准RGB颜色空间）。
* 279261B:图像文件的大小（字节），这里是279261字节（约279KB）。
* 0.000u:用户CPU时间（以秒为单位），即处理图像所花费的CPU时间。
* 0:00.000:真实时间（以分钟和秒为单位），即处理图像所花费的实际时间


### 2.转换图像格式
要将图像从一种格式转换为另一种格式，ImageMagick支持超过200种不同的图像格式，包括但不限于 PNG、JPEG、GIF、WebP、HEIC、SVG、PDF、DPX、EXR 和 TIFF 等。如果要转换图片格式,请使用命令 **magick**(以前版本是convert)后跟输入和输出文件名。例如，要将 PNG 图像转换为 WEBP，请运行：
```shell
 magick input.png output.webp
```
同样，你想转换一个目录中的所有png 到webp,可以使用下面命令应用于目录中的所有图像：

```shell
mogrify -format webp *.png
```
这会将当前目录中的所有 PNG 文件转换为 WEBP,并保持原文件不变。

### 3.调整图像大小

要调整图像大小，请使用-resize 参数，后跟新尺寸。例如，要将图像大小调整为800x600像素，请运行：

```shell
magick input.jpg -resize 800x600 output.jpg
```

您还可以以百分比的方式来缩放图片：
```shell
magick input.jpg -resize 50% output.jpg
```
这会将图像大小调整为原始尺寸的 50％，通常，更改图像大小的最常见方法是将其缩小以适应所需大小。但是可以完全放大图像。

### 4.翻转和旋转
现在让我们看看如何翻转和旋转图像，这有时很有用。要旋转图像，请使用-rotate 参数。例如，要将图像顺时针旋转 60 度，请运行：
```shell
magick input.jpg -rotate 60 output.jpg
```

![旋转](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/upy9orvlsiwm67rmz7av.png)

您还可以将旋转角度指定为负值以逆时针旋转：
```shell
magick input.jpg -rotate -60 output.jpg
```

### 5.裁剪图像
要裁剪图像，请使用-crop选项的命令，后跟新尺寸。裁剪的原点在左上角,例如，要从左上角开始将图像裁剪为 400x400 像素，请运行：

```shell
magick input.jpg -crop 400x400+0+0 output.jpg
```

![裁剪](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2nzpsjcs6j2k0grnpsix.png)

该400x400部分指定新的尺寸，+0+0指定裁剪的起点。

您还可以将起点指定为图像大小的百分比：

```shell
magick input.jpg -crop 50%x50%+0+0 output.jpg
```
这会从图像的左上角开始将图像裁剪为原始尺寸的 50％。

### 5.添加水印
要给图片添加水印,使用下面类似下面的命令,例如在右下角添加一个“blog.eimoon.com”的水印。

```shell
magick image.jpg -gravity SouthEast -pointsize 24 -fill white -annotate +10+10 "blog.eimoon.com" image_watermarked.jpg
```

![添加水印](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kvlhlqv3cthwn7i1l14n.png)

下面解释一下每个参数的含义：

* **magick**: ImageMagick的命令行工具，用于图像转换和处理。
* **image.jpg**: 输入的图片文件。
* **-gravity SouthEast**: 将水印定位在图片的右下角（东南角）。
* **-pointsize 24**: 设置水印文字的大小为24点。
* **-fill white**: 设置水印文字的颜色为白色。
* **-annotate +10+10 "blog.eimoon.com"**: 在指定位置添加水印文本。+10+10 表示将水印文字从右下角向左上方偏移10像素，以免贴边太近。
* **image_watermarked.jpg**: 输出的图片文件，带有水印。
* 
您可以调整不透明度和重力值，将水印放置在您喜欢的任何位置。您还可以为图片添加更多效果。尝试不同的选项，看看您能想出什么样的创意效果.
### 6.添加模糊效果
要为图像添加模糊效果，使用-blur参数，后跟半径和 sigma 值。sigma 值决定模糊量。要添加半径和 sigma 值为 5 的高斯模糊，请运行：
```shell
 magick tiger.jpg -blur 5X5 tiger2.jpg
 ```

![模糊效果](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hiviktxcuoldzw83dwgi.png)
 
### 7.添加锐化效果
要为图像添加锐化效果，请使用-sharpen选项的命令，后跟半径和 sigma。要添加半径为 0 且 sigma 为 1 的锐化效果，请运行：
```shell
 magick tiger.jpg -sharpen  0X1 tiger2.jpg
 ```
 您可以调整半径和 sigma 值来创建不同级别的锐化.

## 结论
在本文中，我们介绍了 ImageMagick 提供的通过命令行处理图像的一些基本功能。还有一下颜色修改,生成gif动画,添加边框等等操作, 我使用的不多,如果你感兴趣的可以查看[文档](https://imagemagick.org/Usage/)。
当然，再次强调,我们这些操作只触及了冰山一角，还有许多高级功能和选项可用,因此请务必查看ImageMagick 文档以了解更多详细信息。
[原文我的博客](https://blog.eimoon.com/p/image-processing-with-imagemagick-guide/)