在命令行中使用 ImageMagick 转换 图像
- 使用终端安装 ImageMagick 实用程序。在 Debian、Ubuntu 或者 Mint 中,输入
sudo apt install imagemagick。 - 要转换图像,命令是
convert [input options] input file [output options] output file。 - 要调整图像大小,请输入
convert [imagename].jpg -resize [dimensions] [newimagename].jpg。
本教程展示了如何使用 Linux 命令行操作图像。
我们将了解如何在文件大小和比例方面调整图像大小。
我们还将学习如何在多种文件类型之间进行转换,例如从 JPG 到 PNG 或者从 GIF 到 TIF。
如何调整图像的文件大小
有多种方法可以更改图像的物理文件大小。
- 更改纵横比(使其变小)
- 更改文件格式
- 更改压缩质量
减小图像的大小将使文件大小更小。
此外,使用包含压缩的文件格式(例如 JPG)将使我们能够减小物理文件的大小。
最后调整质量将使物理文件大小更小。
要压缩图像,请尝试以下命令:
convert imagename.jpg -quality 90 newimage.jpg
如何旋转图像
如果我们拍摄了纵向照片,但希望它是横向图像,则可以使用以下命令旋转图像:
convert imagename.jpg -rotate 90 newimage.jpg
我们可以指定任何旋转角度。
例如,
convert imagename.jpg -rotate 45 newimage.jpg
如何调整图像大小
要调整图像大小,请使用以下命令
convert imagename.jpg -resize dimensions newimagename.jpg
例如,要将图像转换为 800x600,我们可以使用以下命令:
convert imagename.jpg -resize 800x600 newimagename.jpg
如果通过转换为指定的尺寸,纵横比将被弄乱,图像将被调整为最接近的比例。
要强制转换为精确大小,请使用以下命令:
convert imagename.jpg -resize 800x600! newimagename.jpg
我们不必在调整大小命令中指定高度和宽度。
例如,如果我们希望宽度为 800 而我们不关心高度,则可以使用以下命令:
convert imagename.jpg -resize 800 newimagename.jpg
要将图像大小调整为指定的高度,请使用以下命令:
convert imagename,jpg -resize x600 newimagename.jpg
convert命令
convert 命令用于转换图像。
格式如下:
convert [input options] input file [output options] output file.
安装 ImageMagick
convert 命令不是默认的 Linux 系统实用程序,大多数发行版都没有提供。
我们很有可能需要安装它。
Convert 来自 ImageMagick,这是一种被许多应用程序使用的流行图像处理实用程序。
首先在系统上安装它。
Debian/Ubuntu/ Mint
sudo apt install imagemagick
Fedora/CentOS
sudo dnf install ImageMagick
OpenSUSE
sudo zypper install ImageMagick
Arch Linux/Manjaro
sudo pacman -s imagemagick
convert命令行选项
有许多命令行选项可以与 convert 命令一起使用,如下所示:
选项按命令行顺序处理。
我们在命令行上指定的任何选项对后面的图像集仍然有效,直到该集因任何选项或者 -noop 的出现而终止。
某些选项仅影响图像的解码,而其他选项仅影响编码。
后者可以出现在最后一组输入图像之后。
| 选项 | 说明 |
|---|---|
| -adjoin | 将图像合并为一个多图像文件 |
| -affine | 绘制变换矩阵 |
| -antialias | 去除像素混叠 |
| -append | 附加一组图像 |
| -average | 平均一组图像 |
| -background | 背景颜色 |
| -blur x | 用高斯算子模糊图像 |
| -border x | 用彩色边框包围图像 |
| -bordercolor | 边框颜色 |
| -box | 设置注释边界框的颜色 |
| -cache | 像素缓存可用的兆字节内存 |
| -channel | 渠道类型 |
| -charcoal | 模拟木炭画 |
| -chop x{+-}{+-}{%} | 从图像内部删除像素 |
| -clip | 应用剪切路径(如果存在) |
| -coalesce | 合并一系列图像 |
| -colorize | 用笔颜色为图像着色 |
| -colors | 图像中的首选颜色数 |
| -colorspace | 色彩空间的类型 |
| -comment | 用注释注释图像 |
| -compose | 图像合成的类型 |
| -compress | 图像压缩类型 |
| -contrast | 增强或者降低图像对比度 |
| -crop x{+-}{+-}{%} | 裁剪图像的首选大小和位置 |
| -cycle | 按数量替换图像颜色图 |
| -debug | 启用调试打印输出 |
| -deconstruct | 将图像序列分解为组成部分 |
| -delay <1/100ths of a second> | 暂停后显示下一张图片 |
| -density x | 图像的垂直和水平分辨率(以像素为单位) |
| -depth | 图像的深度 |
| -despeckle | 减少图像中的斑点 |
| -display | 指定要联系的 X 服务器 |
| -dispose | GIF处理方法 |
| -dither | 将 Floyd/Steinberg 误差扩散应用于图像 |
| -draw | 用一个或者多个图形基元注释图像 |
| -edge | 检测图像中的边缘 |
| -emboss | 压印图像 |
| -encoding | 指定字体编码 |
| -endian | 指定输出图像的字节序(MSB 或者 LSB) |
| -enhance | 应用数字滤波器来增强嘈杂的图像 |
| -equalize | 对图像执行直方图均衡 |
| -fill | 填充图形基元时使用的颜色 |
| -filter | 调整图像大小时使用这种类型的过滤器 |
| -flatten | 展平一系列图像 |
| -flip | 创建“镜像” |
| -flop | 创建“镜像” |
| -font | 使用文本注释图像时使用此字体 |
| -frame x++ | 用装饰性边框围绕图像 |
| -fuzz {%} | 这个距离内的颜色被认为是相等的 |
| -gamma | 伽马校正级别 |
| -gaussian x | 用高斯算子模糊图像 |
| -geometry x{+-}{+-}{%}{@} {!}{<}{>} | 图像窗口的首选大小和位置。 |
| -gravity | 方向基元在注释图像时被吸引。 |
| -help | 打印使用说明 |
| -implode | 围绕中心内爆图像像素 |
| -intent | 在管理图像颜色时使用这种类型的渲染意图 |
| -interlace | 交错方案的类型 |
| -label | 为图像分配标签 |
| -level | 调整图像对比度级别 |
| -list | 列表类型 |
| -loop | 将 Netscape 循环扩展添加到您的 GIF 动画 |
| -map | 从此图像中选择一组特定的颜色 |
| -mask | 指定剪贴蒙版 |
| -matte | 如果图像有一个,则存储遮罩通道 |
| -median | 对图像应用中值滤波器 |
| -modulate | 改变图像的亮度、饱和度和色调 |
| -monochrome | 将图像转换为黑白 |
| -morph | 变形图像序列 |
| -mosaic | 从图像序列创建马赛克 |
| -negate | 用补色替换每个像素 |
| -noise | 在图像中添加或者减少噪声 |
| -noop | NOOP(无选项) |
| -normalize | 转换图像以跨越整个颜色值范围 |
| -opaque | 将此颜色更改为图像中的笔颜色 |
| -page x{+-}{+-}{%}{!}{<}{>} | 图像画布的大小和位置 |
| -paint | 模拟一幅油画 |
| -pen | 指定绘图操作的笔颜色 |
| -ping | 有效地确定图像特征 |
| -pointsize | Postscript、OPTION1 或者 TrueType 字体的点数 |
| -preview | 图像预览类型 |
| -process | 处理一系列图像 |
| -profile | 将 ICM、IPTC 或者通用配置文件添加到图像 |
| -quality | JPEG/MIFF/PNG 压缩级别 |
| -raise x | 使图像边缘变亮或者变暗 |
| -region x{+-}{+-} | 将选项应用于图像的一部分 |
| -resize x{%}{@}{!}{<}{>} | 调整图像大小 |
| -roll {+-}{+-} | 垂直或者水平滚动图像 |
| -rotate {<}{>} | 对图像应用 Paeth 图像旋转 |
| -sample | 使用像素采样缩放图像 |
| -sampling_factor x | JPEG 或者 MPEG-2 编码器和 YUV 解码器/编码器使用的采样因子。 |
| -scale | 缩放图像。 |
| -scene | 设置场景编号 |
| -seed | 伪随机数生成器种子值 |
| -segment x | 分割图像 |
| -shade x | 使用远处的光源对图像进行遮蔽 |
| -sharpen x | 锐化图像 |
| -shave x | 从图像边缘刮掉像素 |
| -shear x | 沿 X 或者 Y 轴剪切图像 |
| -size x{+offset} | 图像的宽度和高度 |
| -solarize | 否定阈值水平以上的所有像素 |
| -spread | 以随机量替换图像像素 |
| -stroke | 描边图形基元时使用的颜色 |
| -strokewidth | 设置描边宽度 |
| -swirl | 围绕中心旋转图像像素 |
| -texture | 要平铺到图像背景上的纹理名称 |
| -threshold | 阈值图像 |
| -tile | 填充图形基元时平铺图像 |
| -transform | 变换图像 |
| -transparent | 使此颜色在图像中透明 |
| -treedepth | 颜色减少算法的树深度 |
| -trim | 修剪图像 |
| -type | 图像类型 |
| -units | 图像分辨率的类型 |
| -unsharp x | 使用 unsharp mask operator 锐化图像 |
| -use_pixmap | 使用像素图 |
| -verbose | 打印有关图像的详细信息 |
| -view | FlashPix 查看参数 |
| -wave x | 沿正弦波改变图像 |
| -write | 写一个图像序列[转换,合成] |
如何从一种图像格式转换为另一种图像格式
如果我们有一个 JPG 文件并且希望将其转换为 PNG,那么我们可以使用以下命令:
convert image.jpg image.png
我们可以组合多种不同的文件格式。
例如:
convert image.png image.gif convert image.jpg image.bmp convert image.gif image.tif
