在 Ubuntu 中安装 ImageMagick

2025年03月17日 | 阅读 9 分钟

ImageMagick 简介

ImageMagick 是一个开源免费的跨平台软件包,用于显示、创建、转换、修改和编辑光栅图像,可以通过命令行指令 magick 进行操作。它由 John Christy 于 1987 年开发,可以读写 200 多种图像文件格式。ImageMagick 及其组件被广泛用于许多开源应用程序中。

ImageMagick 用于创建、编辑、合成或转换数字图像。它可以读写多种格式(200+)的图像,包括 TIFF、EXR、DPX、PDF、SVG、HEIC、WebP、GIF、JPEG 和 PNR。它可以对图像进行变换、剪切、扭曲、旋转、镜像、翻转和调整大小,调整图像颜色,使用多种特殊效果,或绘制贝塞尔曲线、椭圆、多边形、线条和文本。

ImageMagick 是一个免费软件,以即用型二进制发行版或源代码形式提供,我们可以在专有和开放应用程序中使用、分发、修改和复制它。它根据派生的 Apache 2.0 许可证 共享。

ImageMagick 使用多个计算线程来提高性能。ImageMagick 的最新版本是 7.1.0-43。它运行在 Android OS、iOS、Mac OS X、Windows、Linux 和其他操作系统上。

ImageMagick 历史

ImageMagick 由 John Christy 于 1987 年在杜邦公司工作时开发,当时他将 24 位图像转换为 8 位图像,以便在当时几乎所有屏幕上显示。它于 1990 年免费发布,当时杜邦公司同意将版权授予 ImageMagick Studio LLC,该公司目前仍是项目维护组织。

2016 年 5 月,有消息称 ImageMagick 存在一个漏洞,攻击者可以利用该漏洞在利用该应用程序编辑用户上传图像的服务器上运行任意代码。安全专家(包括 CloudFlare 研究人员)指出,该漏洞已被实际用于活跃的黑客攻击中。该安全漏洞是因为 ImageMagick 在调用后端资源时没有正确检查以确保文件名和路径没有错误的 shell 命令。该漏洞不影响配置了正确安全策略的 ImageMagick 发行版。

ImageMagick 的功能和特性

该软件主要由许多用于图像处理的命令行界面实用程序组成。ImageMagick 没有像 GIMP 和 Adobe Photoshop 那样强大的图像编辑图形用户界面,但对于类 UNIX 操作系统,它包含一个通用的原生 X Window GUI(称为 IMDisplay),用于渲染和操作多个编程语言的 API 库和图像。

该程序使用幻数来识别图像文件格式。

一些程序,例如 vBulletin、phpBB、MediaWikiDrupal,可以使用 ImageMagick 创建图像缩略图。此外,许多其他程序,如 LyX,也使用 ImageMagick 来转换图像。

ImageMagick 包含一个功能完备的 Perl 绑定,称为 PerlMagick,以及各种其他绑定:TclMagick (TK/Tcl)、RMagick (Ruby)、PythonMagick (Python)、IMagick (PHP)、MagickWand for PHP (PHP)、PascalMagick (Pascal)、MagickNet (.NET)、NMagick (Neko/Haxe)、L-Magick (Lisp)、JMagick (Java)、Magick++ (C++)、ImageMagickObject (COM+)、ChMagick (Ch)、MagickWand (C)、MagickCore (C) 或 G2F (Ada)。

Install ImageMagick Ubuntu

文件格式转换

ImageMagick 的彻底实现和基本方面之一是其在不同文件格式之间准确高效地转换图像的能力(它使用 convert 命令来实现此功能)。

颜色量化

在图像中,许多颜色可以减少到任意数量,这是通过平衡图像像素中可用的最突出颜色值来实现的。

相关的功能是海报化艺术效果,它也减少了图像中显示的多种颜色。它与理想颜色量化的区别在于,标准量化中的最终调色板是根据图像中可用颜色的突出权重选择的;海报化使调色板平滑地分布在图像中显示的频谱周围。

每个最终值都是标准颜色量化中真实图像中存在的值,而海报化图像中的颜色值可能不存在于真实图像中,但介于真实颜色值之间。

液体缩放

液体缩放支持于 2008 年添加。此功能允许,例如,将 4:3 图像缩放到 16:9 图像而不改变图像。

抖动

对共享和颜色更改期间出现的抖动进行了良好的控制,包括生成 半色调 抖动的能力。

艺术效果

ImageMagick 包含一系列旨在制作艺术效果的功能和滤镜

  • 海报化
  • 炭笔素描变换

深色

Q8 版本支持多达 8 位/像素元素(8 位灰度、24 或 32 位 RGB 颜色)。Q16 版本支持多达 16 位/像素元素(16 位灰度、48 或 64 位 RGB 颜色)。

OpenCL

ImageMagick 可以应用 OpenCL 来利用加速显卡进行处理。

其他

以下是 ImageMagick 的其他一些方面,已列出并解释如下

  • 变换: 它裁剪、翻转、剪切、旋转或调整图像大小(在可能的情况下,对 JPEG 文件格式使用这些操作而不产生生成损失)。
  • 格式转换: 它将图像从一种格式转换为另一种格式(例如,JPEG 到 PNG)。
  • 透明度: 它使图像部分不可见。
  • 装饰: 它为图像添加边框或框架。
  • 绘制: 它向图像添加文本或形状。
  • 特殊效果: 它对图像进行着色、阈值化、锐化或模糊处理。
  • 动画: 它从一系列图像中组合生成 GIF 动画文件。
  • 图像识别: 它描述图像的属性和格式。
  • 评论和文本: 它在图像中插入艺术性和描述性文本。
  • 合成: 它将一个图像叠加在另一个图像之上。
  • 广义像素扭曲: 它纠正或激活透视等图像扭曲。
  • 蒙太奇: 它将图像缩略图连接到图像画布上。
  • 形状形态: 它读写数字电影工作中使用的基本图像格式
  • 离散傅里叶变换: 它实现逆向和正向 DFT。
  • 图像计算器: 它对图像通道或图像使用数学表达式。
  • 色彩管理: 它根据色彩空间的要求,使用正确的色彩管理以及色彩配置文件或内置伽马扩展或压缩。
  • 加密或解密图像: 它将基本图像转换为难以辨认的乱码并再次转换回来。
  • 高动态范围图像: 它精确地描绘了从直射阳光到最暗阴影的实际场景中检测到的巨大强度范围。
  • 大图像支持: 它读、处理或写入万亿、千兆或百万像素的图像尺寸。
  • 执行支持线程: ImageMagick 是线程安全的,几乎所有内部算法都并行运行,以利用多核处理器芯片提供的加速。
  • 虚拟像素支持: 它提供对图像区域外部像素的便捷访问。
  • 分布式像素缓存: 它将中间像素存储卸载到多个远程服务器。
  • 异构分布式处理: 许多算法都启用了 OpenCL,以便利用在由 GPU、CPU 和其他处理器组成的异构环境中协同运行所提供的加速。
  • iPhone 上的 ImageMagick: 它在 iPad 或 iPhone 等 iOS 计算设备上转换、编辑或合成图像。

ImageMagick 相关软件

ImageMagick 5.5.2 有一个分支,即 GraphicsMagick。它创建于 2002 年,专注于跨版本编程 API 稳定性和命令行选项。GraphicsMagick 是由于开发人员组中的不兼容差异而产生的。

ImageMagick 发行版

它是跨平台的,在类 Unix 和 Microsoft Windows 系统上执行,包括 FreeBSD、Haiku、Solaris、Android、iOS、macOS 和 Linux。项目源代码可以为多个系统编译,包括 MorphOSAmigaOS 4.0。它已在 IRIX 上运行。

ImageMagick 命令行工具

ImageMagick 包含几个用于操作图像的命令行实用程序。我们大多数人可能习惯于使用 Photoshop 或 GIMP 等图形用户界面一次编辑图像。但 GUI 并非总是好的。

假设我们希望通过网络脚本动态处理图像,或者我们希望对各种图像使用类似的操作,或者在不同的时间对不同或相同的图像重复特定操作。命令行图像处理实用程序非常适合这些操作。

如果命令行参数具有准确的语法且未遇到任何问题,ImageMagick 的命令行工具将以 0 状态退出。如果发生任何异常,例如语法不正确、写入或读取图像时出现问题或其他阻止命令成功完成的问题,则会以 1 状态和描述性消息退出。

以下是所有命令行工具的描述

Install ImageMagick Ubuntu
  • magick: 它在多种图像格式之间转换,并进行图像调整大小、模糊、重新采样、连接、翻转、绘制、抖动、去斑点、裁剪等操作。
  • magick-script: 我们可以使用 magick-script 脚本语言解释器在多种图像格式之间进行转换,并进行图像调整大小、模糊、重新采样、连接、翻转、绘制、抖动、去斑点、裁剪等操作。

ImageMagick 6 版也支持子命令以实现兼容性

  • magick animate: 它在服务器上播放图像序列动画。
  • magick composite: 它将一个图像叠加在其他图像之上。
  • magick compare: 它从视觉和数学上标注图片及其重建之间的区别。
  • magick conjure: 它解释并运行 MSL(Magick 脚本语言)中指定的脚本。
  • magick convert: 它在多种图像格式之间转换,并进行图像调整大小、模糊、重新采样、去斑点、裁剪、绘制、抖动、连接、翻转等多种操作。
  • magick identify: 它定义多个图像文件的特性或格式。
  • magick display: 它在服务器上显示图像序列或图像。
  • magick import: 它在 X 服务器上保存一个清晰的窗口,并将其结果作为图像文件。我们可以捕获一个窗口、屏幕的矩形部分或整个屏幕。
  • magick montage: 它通过关联许多孤立的图像来创建合成图像。图像放置在合成图像上,并可选地用图像名称、框架、边框等进行装饰。
  • magick mogrify: 图像调整大小、模糊、重新采样、去斑点、裁剪、绘制、抖动、连接、翻转等。它会覆盖实际的图像文件,但 magick 会写入不同的图像文件。
  • magick stream: 它是一个轻量级工具,用于将图像或图像部分的多个像素元素流式传输到我们所需的存储格式。它可以将像素元素在输入图像中逐行读取时写入,如果处理大图像或需要原始像素元素,则流式传输会非常有用。

ImageMagick 的开发

通常,ImageMagick 功能通过命令行使用,或者我们可以使用我们喜欢的语言中指定的程序中的方面。我们可以从多种接口中进行选择。我们还可以使用 ImageMagick 通过语言接口自动且动态地创建或修改图像。

我们可以从多种语言接口中进行选择

  • C: 我们可以使用线程安全库 MagickWand 来使用 C 语言编辑、合成和转换图像。此外,还有一个低级线程安全库 MagickCore,供向导级开发人员使用。还提供了一个名为 MagickCacheAPI 的开发库,用于使用高效的图像缓存。
  • C++: Magick++ 为 ImageMagick 提供了面向对象的线程安全 C++ 接口。
  • Ch: 它是 MagickWand 和 MagickCore API 的 Ch 绑定。它是一个用于脚本的 C/C++ 解释器。
  • GO: GoImagick 是 ImageMagick 的 MagickCore 和 MagickWand API 的 Go 绑定集合。
  • Java: JMagick 为 ImageMagick 提供了面向对象的 Java 接口。还有一个纯 Java 接口,称为 Im4java,用于 ImageMagick 命令行。
  • TypeScript/JavaScript: WASM-ImageMagick 是一个 Webassembly ImageMagick 编译,允许 JavaScript 和 TypeScript 的客户端无服务器绑定。它在渐进式 Web 应用程序中运行。
  • KMagick: 它为 ImageMagick 提供了 Kotlin 绑定。
  • Julia: JuliaIO 为 ImageMagick 提供了面向对象的 Julia 接口。
  • Lisp: CL-Magick 为 ImageMagick 提供了通用 Lisp 接口。
  • LabVIEW: LVOOP ImageMagick 为 ImageMagick 提供了面向对象的 LabVIEW 接口。
  • Lua: 它通过 FFI 为 LuaJIT 提供了 ImageMagick 的 Lua 绑定。
  • Neko: NMagick 是 ImageMagick 库到 NekohaXe 的移植。它为 Neko 的桌面和 Web 应用程序提供了图像操作功能。
  • .NET: ImageMagick 是一个用 C# 编写的 .NET 应用程序,它使用 ImageMagick 命令行允许将多种图像格式转换为不同的格式。我们可以使用 Magick.NET 从 Windows.NET 编辑、合成和转换图像。

在 Ubuntu 中安装 ImageMagick

ImageMagick 是一个非常著名的开源软件包,用于编辑位图图像。在本文中,我们将讨论如何在 Ubuntu 中安装最新版本的 ImageMagick。

使用 APT 包仓库安装 ImageMagick

我们可以从官方 Ubuntu 的 APT 包仓库安装 ImageMagick 的当前稳定版本。

首先,我们需要通过运行以下命令更新系统的 APT 缓存仓库

更新系统软件包仓库后,我们可以借助以下命令安装 ImageMagick


Install ImageMagick Ubuntu

键入 "y" 按钮并按下 "Enter" 按钮以授予额外的磁盘空间并继续安装过程。

一旦 ImageMagick 成功安装到我们的系统中,我们需要通过输入以下命令来验证安装。