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. C++/Qt网络通讯模块设计与实现(五)

    在C++/Qt网络通讯模块设计与实现(四)中具体分析了Qt的信号槽.线程相关的知识,即从 Qt::ConnectionType,示例源码,结果论证,归纳总结等四个方面进行了全方面讲解,深刻阐述了代码设 ...

  2. NEFU高级程序设计-期末复习习题组

    1. 用链表实现单词序列倒序输出 题目 用链表实现单词序列倒序输出.与以往不同,请考虑采用一种完全的动态分配方式! 为降低难度,"仁慈"的我已经给出了输出和释放的代码,你只要写出创 ...

  3. Rancher(V2.6.3)安装K8s教程

    Rancher(V2.6.3)安装K8s教程 一,安装前环境准备: 1,升级Linux服务器内核 Ubuntu20.04: #查看当前内核版本 uname -rs #查看软件库中可下载的内核 sudo ...

  4. solidity中的mapping

    mapping可以理解为python中对字典的键值遍历,键是唯一的而值是可以重复的 mapping函数的构造: mapping(_KeyType => _ValueType)  mapping ...

  5. 随机森林n_estimators 学习曲线

    随机森林 单颗树与随机森林的的分对比 # 导入包 from sklearn.datasets import load_wine from sklearn.model_selection import ...

  6. 回顾.NET系列:Framework、Net Core、Net 过往

    目录 一.个人最近工作变化 二.Framework.Net Core..NET 时过境迁 Framework:爱你定格在4.8 .Net Foundation:.Net变革大脑 重新统一的 .NET ...

  7. 事实胜于雄辩,苹果MacOs能不能玩儿机器/深度(ml/dl)学习(Python3.10/Tensorflow2)

    坊间有传MacOs系统不适合机器(ml)学习和深度(dl)学习,这是板上钉钉的刻板印象,就好像有人说女生不适合编程一样的离谱.现而今,无论是Pytorch框架的MPS模式,还是最新的Tensorflo ...

  8. RCE-Tricks

    这篇文章介绍RCE的一些tricks 0x01 无回显的RCE 在ctf中,有时会遇到无回显rce,就是说虽然可以进行命令执行,但却看不到命令执行的结果,也不知道命令是否被执行,借着这次总结rce的机 ...

  9. SpringBoot 使用 Sa-Token 完成权限认证

    一.设计思路 所谓权限认证,核心逻辑就是判断一个账号是否拥有指定权限: 有,就让你通过. 没有?那么禁止访问! 深入到底层数据中,就是每个账号都会拥有一个权限码集合,框架来校验这个集合中是否包含指定的 ...

  10. 深度相机:结构光、TOF、双目相机

    随着人工智能与机器人.无人驾驶的火热,深度相机的技术和应用也受到关注,何谓深度相机? 顾名思义,就是可以测量物体到相机的距离(深度) 传统的RGB彩色普通相机称为2D相机,只能拍摄相机视角内的物体,没 ...