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 ...
随机推荐
- 《Inside C#》笔记(完) 程序集
程序集内部包含了各种相关的模块.资源文件.配置文件等,将这些在功能上相关的文件整合到单个文件中,以便于部署和维护.使用C#编译器编译程序时,生成的便是程序集. 一.清单数据 a)如果编译的是独立应用程 ...
- 慕学在线网0.2_users表设计(1)
1.Django App设计: users-用户管理(任何web中,users表都是第一个被设计的) course-课程管理 organization-机构和教师管理 operation-用户操作管理 ...
- 洗礼灵魂,修炼python(23)--自定义函数(4)—闭包进阶问题—>报错UnboundLocalError: local variable 'x' referenced before assignment
闭包(lexical closure) 什么是闭包前面已经说过了,但是由于遗留问题,所以单独作为一个章节详解讲解下 不多说,看例子: def funx(x): def funy(y): return ...
- mybatis学习--缓存(一级和二级缓存)
声明:学习摘要! MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级) ...
- MySQL5.7中的sql_mode默认值
简介 在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode 默认值的改变 optimizer_switc ...
- centos7发行版号对应基于RHEL Source(版本)对照表
基础分布 详情地址:https://wiki.centos.org/Download 存档版本 CentOS Linux 7 发布 基于RHEL Source(版本) 存档的树 7(1804) 7.5 ...
- mysql覆盖索引详解
覆盖索引的定义: 如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’.即只需扫描索引而无须回表. 只扫描索引而无需回表的优点: 1.索引条目通常远小于数据行大小,只需要读取索引, ...
- 如何创建一个 mongo 数据库并为它添加一个认证用户?
0.登录 admin 库,开启一个 mongo shell mongo --port 27017 -u "adminUser" -p "adminPass" - ...
- February 7th, 2018 Week 6th Wednesday
We are all resigned to death: it is life we aren't resigned to. 我们可以屈从于死神,但我们却不能让生活任意摆布. Of all the ...
- swift class的虚函数表、扩展、@objc修饰、虚函数的派发方式研究
swift class的虚函数表.扩展.@objc修饰的研究 工具: swiftc -emit-sil BaseClass.swift | xcrun swift-demangle > Clas ...