在命令行中使用 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