【工具推荐】图像界的魔术师 ImageMagick
如果说 Pandoc 里文档界的瑞士军刀,那么 ImageMagick 就是图形界的瑞士军刀。
上周在为 Growth 制作插图的时候,需要:1. 合并不同的图像;2. 对图片进行缩放。考虑到图片的数量差不多有 30 张左右,我决定要找一个工具。。。
这个时候就找到了 ImageMagick 中的几个命令,它居然可以完成我大部分的功能。
合并图像
最开始的时候,我是想合并几张图片,成如下的样子:
SkillTree
按照我的习惯,我会打开 Photoshop,然后计算一次合成的图片的宽度。在我合成了两三张图片之后,我就累了。
搜索过后,便发现了 IMageMagick 的 convert
命令,只需要简单地执行一下:
convert skilltree-1.png skilltree-2.png skilltree-3.png +append skilltree.png
而 convert
这个命令,其所拥有的参数选项居然有 253 个,我是我在执行下面的命令后统计到的:
convert --help | grep " -"|wc -l
它可以用来转换图像格式,调整图像大小、模糊、裁剪、去斑、抖动、绘图、翻转、加入、重新采样等等。它的功能相当的丰富,以至于我联想到我只需要有这个命令 + 一个简单的 UI,我就可以做出一个 P 图软件了。
批量缩放大小
在合并图像之前,我需要对图片进行缩放。同样的,我找到的工具也是 ImageMagick 中的:
mogrify -geometry x600 *.png
这里的 x600 即是图片的高度,上面的命令会将所有的 png 缩放到高度为 600 的图片。除了缩放,它还可以轻松地转换图形的格式:
mogrify -format jpg *.png
即可以将所有的 jpg 转为 png。
ImageMagick
它可以以各种格式读取和写入图像(超过200种),包括PNG,JPEG,JPEG-2000,GIF,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG。使用 ImageMagick 调整大小,翻转,镜像,旋转,扭曲,剪切和变换图像,调整图像颜色,应用各种特殊效果,或绘制文本,线条,多边形,椭圆和Bézier曲线。
它可以支持以下的特性[features]:
- 格式转换:从一种格式转换成图像到另一个(例如 PNG 转 JPEG)
- 变换:缩放,旋转,裁剪,翻转或修剪图像
- 透明度:使图像的部分变为透明
- 附加:添加形状或一帧到图像
- 装饰:添加边框或帧图像
- 特效:模糊,锐化,阈值,或色彩图像动画:创建一个从GIF动画图像组序列
- 文本及评论:插入描述或艺术图像中的文字
- 图像识别:描述的格式和图像性能
- 综合:重叠了一个又一个的图像
- 蒙太奇:并列图像画布上的图像缩略图
- 电影支持:读写图像的共同使用的数字电影工作方式
- 图像计算器:应用数学表达式的图像或图像通道
- 离散傅立叶变换:实现正向和反向的DFT。
- 高动态范围图像:准确地表现了从最明亮的阳光直射到最深最黑暗的阴影找到真正的幕后广泛的强度水平
- 加密或解密图片:转换成不懂乱码,然后再返回普通图像
- 虚拟像素支持:方便以外区域的图像像素
- 大图像支持:读,过程,或写mebi和吉比像素的图像尺寸
- 执行:ImageMagick的是线程安全的,利用内部算法OpenMP的功能及快速的双核和四核处理器技术提供窗口优势
- 异构分布式处理:某些算法可以在跨越的CPU,GPU,以及其他处理器组成的异构平台音乐会执行速度提高。
它可以支持 Linux、Windows、 Mac Os X、 iOS、 Android OS 等等的系统。
[features]: 翻译源自 https://imagemagick.cn/
节选自 Phodal 的工具箱:http://toolbox.phodal.com/
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php给数组赋值的实例方法
- php实现分页功能的详细实例方法
- 浅谈Laravel中的三种中间件的作用
- laravel 使用auth编写登录的方法
- laravel框架 laravel-admin上传图片到oss的方法
- php实现推荐功能的简单实例
- php实现登录页面的简单实例
- Laravel 自带的Auth验证登录方法
- laravel实现上传图片的两种方式小结
- Laravel开启跨域请求的方法
- Laravel 5.4前后台分离,通过不同的二级域名访问方法
- Yii框架数据库查询、增加、删除操作示例
- 在laravel5.2中实现点击用户头像更改头像的方法
- laravel 多图上传及图片的存储例子
- Laravel 添加多语言提示信息的方法