linux的convert图片处理工具
得到一个图片的尺寸,
identify test.png
结果为:
test.png PNG 178x15 178x15+0+0 16-bit PseudoClass 65536c 2.28kb
使用shell
identify test.png | cut -d ' ' -f 3 | cut -d 'x' -f 1
identify test.png | cut -d ' ' -f 3 | cut -d 'x' -f 2
分别得到宽和高
不过要是在java中通过runtime来运行这个命令是很麻烦的,它使用空格把参数分割出来的,它不会认为引号引起来的是一个参数,这个也有解决办法,这里就不说了。
所以,还是用identify test.png这个命令,得到的字符串用java的方式处理一下,也很简单。
1、压缩一个图片,限定高度为60, 宽高比例不变,但如果宽大于90,截取中间一段
convert source.jpg -resize x60 result_60.jpg
获取result_60.jpg的宽和高
if( 宽 > 90 ){
convert result_60.jpg -gravity center -extent 90x60 result_60.jpg
}
这里要注意, -gravity和-extent配合使用在6.2.8的版本中是不正常的,可以选择用crop
计算 dx = (宽-90)/2
convert result_60.jpg -crop 90x60+${dx}+0 result_60.jpg
2、压缩一个图片,限定高和宽, 宽高比例不变,需要适当的裁减
例如:压缩为60x60, 这是一个特例,宽高正好相同,如果不同,计算会有所不同,但方法一样。
获取source.jpg的宽和高
if( 宽 > 高 ){
convert source.jpg -resize x60 -gravity center -extent 60x60 result_60.jpg
}
else{
convert source.jpg -resize 60x -gravity center -extent 60x60 result_60.jpg
}
3、截图
convert result_60.jpg -crop wxh+dx+dy result_60.jpg
w为要截取图片的宽
h为要截取图片的高
dx,dy是开始截取的偏移位置,以左上角为原点
4、拼图
横向拼接
convert 1.jpg 2.jpg 3.jpg +append result.jpg
纵向拼接
convert 1.jpg 2.jpg 3.jpg -append result.jpg
横向+纵向
convert /( 1.jpg 2.jpg 3.jpg +append /) /
/( 4.jpg 5.jpg 6.jpg +append /) /
/( 7.jpg 8.jpg 9.jpg +append /) /
-append result.jpg
5、256色png压缩
convert -strip -depth 8 -colors 256 soure.png result.png
advpng -z -4 result.png
6、图片上写字
convert source.jpg -font xxx.ttf -fill red -pointsize 48 -annotate +50+50 @text.txt result.jpg
使用字体xxx.ttf, 字体用红色填充,字体48pixel, 位置(50,50), 文字在text.txt文件中
7、图片上画长方形
convert source.jpg fill none -stroke red -strokewidth 3 -draw rectangle 50,50 100,100 result.jpg
还一个线宽为3,颜色为红色,从50,50到100,100的正方形,不填充
画线为 -draw line 50,50 100,100
相关链接:
1. http://dikar.iteye.com/blog/1576056
2. http://www.linuxbyte.org/linux-convert-mini-howto.html
3. http://www.cnblogs.com/chenwenbiao/archive/2011/07/25/2116152.html
4. http://wiki.klniu.com/zh/Linux常用命令或工具集 (10)
linux的convert图片处理工具的更多相关文章
- linux下图片转换工具[【转】
本文转载自:https://linux.cn/article-8014-1.html 计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法.这篇教程里,我们会使用 Linux 命令行 ...
- Linux之convert命令
Linux之convert命令 强大的convert命令 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例 ...
- Java操作图片的工具类
操作图片的工具类: import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.a ...
- ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...
- java图片处理工具类
直接上代码: package com.zxd.tool; /** * Created by zhang on 14-3-1. * 图片的常用操作类 */ import java.awt.AlphaCo ...
- 8 个优秀的 Linux 图形图像及色彩工具
8 个优秀的 Linux 图形图像及色彩工具 1. 硬件色彩分析器LPROF LPROF 是一个用于创建设备兼容,如相机.扫描仪.显示器的ICC兼容型材的颜色分析器.这些配置提供跨设备的色彩一致性.他 ...
- Java的图片处理工具类
import Java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- Linux开机启动图片修改
Linux启动时会在屏幕上显示一个默认的开机图片,我们可以修改成为自己的图片,需要做以下工作 软件gimp下载地址:http://www.rayfile.com/zh-cn/files/0bb556b ...
- 最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具
===================================================== 最简单的基于FFmpeg的libswscale的示例系列文章列表: 最简单的基于FFmpeg ...
随机推荐
- 《数据库系统概念》10-ER模型
通过建立实体到概念模型的映射,Entity-Relationship Model可以表达整个数据库的逻辑结构,很多数据库产品都采用E-R模型来表达数据库设计. 一.E-R模型采用了三个基本概念:实体集 ...
- ViewPager防止Fragment销毁以及取消Fragment的预加载
存在的问题 1. 默认情况下,ViewPager会根据setOffscreenPageLimit()方法设置的大小,自动预加载2. 还是根据setOffscreenPageLimit()方法设置的大小 ...
- python中if else流程判断
_username='Lily' _password=' username=input("username:") password=input("password:&qu ...
- python第三十一天-----类的封装、继承,多态.....
封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. cla ...
- Centos7下chkconfig设置MySql自动启动
1.将服务文件拷贝到init.d下,并重命名为mysql cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 2.赋予可执 ...
- java针对不同方法的分页
一.常见的分页实现方式 ①使用List接口中的subList(int startIndex,int endIndex)方法实现分页 ②直接使用数据库SQL语句实现分页 ③使用hibernate等框架实 ...
- MySQL使用索引的场景分析、不能使用索引的场景分析
一.MySQL中能够使用索引的典型场景 1.匹配全值.对索引中的列都有等值匹配的条件.即使是在and中,and前后的列都有索引并进行等值匹配. 2.匹配值的范围查询,对索引的值能够进行范围查找. 3. ...
- tidb集群某个节点报错之:node_exporter-9100.service failed
今天启动集群tidb时出现一个错误,是某个tikv节点报错:node_exporter-9100.service failed 一个节点的问题会导致整个集群启动失败.去此节点下的日志文件中查找,发现 ...
- zabbix实现微信告警配置
zabbix设置微信报警的配置过程 zabbix的报警方式有很多,在这里我们来详细说明一下如何通过微信报警 微信企业号的申请 注册的地址https://qy.weixin.qq.com/ 这样企业就 ...
- PJ可能会考的模拟与枚举-自学教程
PJ可能会考的模拟与枚举-自学教程 文/Pleiades_Antares 之前学校里看一个小可爱复习的时候偷偷听来着XD 简单记了一下重点吧,希望能对看官您有所帮助XD 以下⬇️是几个复习时讲过的题, ...