Use ImageMagick to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.

简单的来说,ImageMagick 就是:

  • ImageMagick(简称 IM)是一个支持 GPL 协议的开源免费软件包。全部源码开放,可以自由使用,复制,修改,发布。

  • 它由一组命令行工具组成的。

  • 它可以对超过 200 种的图像格式(包括 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF 等等),进行读、写、编辑和转换的操作。

  • 它支持多数主流操作系统,其中包括 UNIX、Mac OS X 、Windows,以及 IOS、Android 等。

相比 PhotoShop 和 GIMP 提供的图形用户接口 (GUI) 编辑图像,ImageMagick 通过一组命令行工具来操作图片,更有助于批量化的图片处理。你当然可以用 PhotoShop 或 GIMP 这样的软件来处理图像。没人禁止你这么做,就像没人禁止你用大炮打蚊子一样。不过依我看,打蚊子最好还是用电蚊拍,而要处理大量图像的话,尤其当你只想批量转换一些图片格式,或者批量生成缩略图,调整分辨率,我推荐 ImageMagick。

支持的程序语言: Perl, C, C++, Python, PHP, R, 等。

ImageMagick 接口

PythonMagick (Python); PerlMagick (Perl); 
IMagick (PHP)

magick (R); 等等。

1. 安装 ImageMagick

这里主要介绍一下 CentOS 7 下的 ImageMagick 安装,其他平台下的安装可以自行谷歌。

1.1 源码安装

如果你没有 root 权限,可以在 ImageMagick 安装过程中发现缺乏什么依赖,就手动去下载安装该依赖。过程可能很繁琐,环境配置起来可能也很复杂。

# 安装依赖
$ yum -y install bzip2-devel freetype-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel zlib-devel ghostscript-devel djvulibre-devel libwmf-devel jasper-devel libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms-devel libxml2-devel librsvg2-devel OpenEXR-devel php-devel

# 安装 ImageMagick
$ wget https://www.imagemagick.org/download/ImageMagick.tar.gz
$ tar zvxf ImageMagick.tar.gz
$ cd ImageMagick-7.0.10-23
$ ./configure --prefix=/data/software/imagemagick-7.0.10-23
$ make
$ make install

1.2 conda 安装

没有 root 的权限,使用 conda 安装 ImageMagick 是最快捷有效的方式,推荐使用。

$ conda search imagemagick
$ conda create -n imagemagick imagemagick

2. 使用体验

ImageMagick 的使用网络上教程非常非常多,这里就不一一再重复了,需要的自己去百度或者谷歌。说几点使用过程中的小发现。

  1. 从 ImageMagick 7 起,magick 命令替换了原来的 convert 命令,但 convert 命令依然可以使用。

  2. ImageMagick 6.7.8-9 版本的 convert 命令存在一些 bug,例如本人在执行 PDF→TIFF 的转换过程经常会出现一些莫名其妙的报错;升级成 7.0.10-23 的 magick 后,恢复正常!
  3. ImageMagick 中的 convert/magick 一个命令就包含了超过 200 多个子命令(参数),功能非常强悍,也让人眼花缭乱。

  4. convert/magick 不同的参数排列顺序,有时候会得到截然不同的处理性能和效果,这是让人非常头疼的一个问题,有时候你都不知道这个参数到底是放在输入文件前,还是放在输入文件后!
  5. 正常来说,一个图片当总像素大小保持不变,提高 dpi 会导致图片的物理尺寸变小。在 ImageMagick 中以 dpi 为变量,如何保证总像素大小不变前提下,自动转换图片格式,目前没找到更好的解决方法。



3. 题外话

一般的杂志期刊对于投稿图片都是有要求的,如果想要得到发文级别分辨率和尺寸的图片,除了在画图时进行参数设置,或手动 PS 以外,或许还有一些可以自动完成这一系列操作的平台,或者 AI 神器吧!遗憾的是,目前我还没找到。

拭目以待~~

猜您喜欢 往期精选▼

1. SCI 投稿中像素、DPI、图片分辨率的一些知识

2. 一款强大而实用的图片去水印神器

3. R 语言中的高级图像处理包

4. 基于 Dash Bio 的生物信息学数据可视化

5. 基于 ggplot2 的解剖图和组织模块可视化

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

ImageMagick 图像处理学习笔记的更多相关文章

  1. OpenCV图像处理学习笔记-Day1

    OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...

  2. OpenCV图像处理学习笔记-Day03

    OpenCV图像处理学习笔记-Day03 目录 OpenCV图像处理学习笔记-Day03 第31课:Canny边缘检测原理 第32课:Canny函数及使用 第33课:图像金字塔-理论基础 第34课:p ...

  3. OpenCV图像处理学习笔记-Day4(完结)

    OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直 ...

  4. 数字图像处理学习笔记之一 DIP绪论与MATLAB基础

    写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同 ...

  5. 深刻认识shift_ram IP core——图像处理学习笔记

    在进行图像处理算法中,往往需要生成图像像素矩阵,这对于C语言来说可以直接用数据表示,但是对于verilog来说便不是那么容易了,硬件描述语言不比软件,它的核心不再算法,而是在于设计思想,加速硬件.在进 ...

  6. MATLAB数字图像处理学习笔记

    我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...

  7. CS131&Cousera图像处理学习笔记 - L4&W2滤波和卷积

    cs131: http://vision.stanford.edu/teaching/cs131_fall1617/ coursera: https://www.coursera.org/learn/ ...

  8. OpenCV 图像处理学习笔记(一)

    解读IplImage结构 typedef struct _IplImage { int nSize;                    /* IplImage大小 */ int ID;       ...

  9. CS131&Cousera图像处理学习笔记 - L5边缘

    cs131: http://vision.stanford.edu/teaching/cs131_fall1617/ coursera: https://www.coursera.org/learn/ ...

  10. C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法

    C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法 Bitmap类:此类封装了GDI+中的一个位图,次位图有图形图像及其属性的像素数据组成.因此此类是用于处理像素数据定义的图形的对象.该类的 ...

随机推荐

  1. Java面试——RPC

    一.RPC 服务的原理 [1]Socket 套接字:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个链接的一端称为 Socket.可以实现不同计算机之间的通信,是网络编程接口的具体实现.So ...

  2. 记一次 .NET 某医疗住院系统 崩溃分析

    一:背景 1. 讲故事 最近收到了两起程序崩溃的dump,查了下都是经典的 double free 造成的,蛮有意思,这里就抽一篇出来分享一下经验供后面的学习者避坑吧. 二:WinDbg 分析 1. ...

  3. 【小白晋级大师】如何设计一个支持10万人用的ChatGPT对接系统

    不停地书写,方能不失在人海茫茫. 1.前言 之前给大家写了ChatGPT对接企业微信的教程,具体可看知乎链接: [奶奶看了都会]ChatGPT3.5接入企业微信,可连续对话 文章结尾说了教程只能适用于 ...

  4. 介绍ChatGPT:基于GPT-3.5的强大自然语言处理工具

    大家好,今天我们来聊一下ChatGPT,一个基于GPT-3.5架构的大型语言模型.ChatGPT在自然语言处理方面有着非常强大的能力,可以进行语言生成.文本分类.对话生成等多种任务.接下来,我们将会详 ...

  5. [Java]排序算法>插入排序>【折半插入排序】(O(N*N)/稳定/N较大/无序/顺序存储)

    1 折半插入排序 1.1 算法思想 相比于[直接插入排序]:采用"顺序查找法"查找当前记录在已排好序的序列中的插入位置, 折半插入排序利用"折半查找法"快速查出 ...

  6. 企业应用可观测性利器!华为云CodeArts APM发布

    摘要:近日,华为云全链路应用性能管理服务CodeArts APM全新上线,提供端到端的全链路性能管理服务,涵盖前端监控.应用性能监控,全面拥抱开源生态. 本文分享自华为云社区<企业应用可观测性利 ...

  7. 为HttpClient开启HTTP/2

    .Net Core在调用其他服务时,调用通常使用HttpClient,而HttpClient默认使用HTTP/1.1 . 配置 HttpClient 以使用 HTTP/2 h2 连接 自 .NET C ...

  8. SpringBoot 自动扫描第三方包及spring.factories失效的问题

    为什么会找不到 Spring 依赖注入 就是要让spring找到要注入的类 并且识别到了 @Component.@Service 等注解. 1. 当在开发的第三方包里写明了 @Component.@S ...

  9. 【Docker】镜像管理

    一.搜索镜像 1.在官方网站搜索镜像 Docker 官方镜像仓库:https://hub.docker.com/ 2.docker search 搜索镜像 Usage: docker search [ ...

  10. Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人

    Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting.Self-Consistency等:项目实战搭建知识库内容机器人 1. ...