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. SpringBoot高频面试题

    Springboot的优点 内置servlet容器,不需要在服务器部署 tomcat.只需要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目 SpringBoot提供了s ...

  2. Linux 磁盘空间查看及清理

    1. 查看磁盘空间 查看当前目录各文件夹大小 du -ah -x --max-depth=1 查看文件大小 ls -lh 查看系统空间占用 df -h 2. 磁盘空间清理 Linux清除文件内容 ca ...

  3. 使用drf的序列化类实现增删改查接口

    目录 什么是DRF 安装DRF 基于原生创建五个接口 基于rest_framework的增删改查 查询多条数据 流程 创建表 创建序列化类 创建视图类 增加路由 查询单条数据 序列化类不变 视图类定义 ...

  4. kubernetes核心实战(九)

    14.Ingress 检查是否有安装 [root@k8s-master-node1 ~/yaml/test]# kubectl get pod,svc -n ingress-nginx NAME RE ...

  5. github打不开或者打开慢方法

    github最近打不开,很久之前遇到过,但是忘记怎么解决了,查找相关资料后,今天记录在此,以备不时之需. 记住3个关键网址 github网址查询:The world's leading softwar ...

  6. 和 chatgpt 聊了一会儿分布式锁 redis/zookeeper distributed lock

    前言 最近的 chatGPT 很火爆,听说取代程序员指日可待. 于是和 TA 聊了一会儿分布式锁,我的感受是,超过大部分程序员的水平. Q1: 谈一谈 java 通过 redis 实现分布式 锁 ch ...

  7. Ficow 的 AI 平台快速上手指南(ChatGPT, NewBing, ChatGLM-6B, cursor.so)

    本文首发于 Ficow Shen's Blog,原文地址: Ficow 的 AI 平台快速上手指南(ChatGPT, NewBing, ChatGLM-6B, cursor.so). 内容概览 前言 ...

  8. 中国省市区--地区SQL表

    SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for rc_district -- ---- ...

  9. php对接snmp设备详细讲解

    1.Php安装snmp扩展 1.基础环境准备 Php7.2版本 yum -y install php72w-snmp Php7.4版本 yum install net-snmp php-snmp ne ...

  10. Android Studio 样式和主题背景

    样式和主题背景 转载自   Styles and Themes  |  Android Developers 借助 Android 中的样式和主题背景,您可以将应用设计的细节与界面的结构和行为分开,其 ...