得到一个图片的尺寸,

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图片处理工具的更多相关文章

  1. linux下图片转换工具[【转】

    本文转载自:https://linux.cn/article-8014-1.html 计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法.这篇教程里,我们会使用 Linux 命令行 ...

  2. Linux之convert命令

    Linux之convert命令 强大的convert命令 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例 ...

  3. Java操作图片的工具类

    操作图片的工具类: import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.a ...

  4. ubuntu下linux内核源码阅读工具和调试方法总结

    http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...

  5. java图片处理工具类

    直接上代码: package com.zxd.tool; /** * Created by zhang on 14-3-1. * 图片的常用操作类 */ import java.awt.AlphaCo ...

  6. 8 个优秀的 Linux 图形图像及色彩工具

    8 个优秀的 Linux 图形图像及色彩工具 1. 硬件色彩分析器LPROF LPROF 是一个用于创建设备兼容,如相机.扫描仪.显示器的ICC兼容型材的颜色分析器.这些配置提供跨设备的色彩一致性.他 ...

  7. Java的图片处理工具类

    import Java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  8. Linux开机启动图片修改

    Linux启动时会在屏幕上显示一个默认的开机图片,我们可以修改成为自己的图片,需要做以下工作 软件gimp下载地址:http://www.rayfile.com/zh-cn/files/0bb556b ...

  9. 最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具

    ===================================================== 最简单的基于FFmpeg的libswscale的示例系列文章列表: 最简单的基于FFmpeg ...

随机推荐

  1. Kotlin入门(4)声明与操作数组

    上一篇文章介绍了基本变量类型在Kotlin中的用法,不过这只针对单个变量,如果要求把一组相同类型的变量排列起来,形成一个变量数组,那又该如何声明和操作呢? 在Java中声明数组,跟在C语言中声明是一样 ...

  2. asp.net学习——Response对象

    (2011-03-29 07:33:03) 转载▼ 标签: 杂谈 分类: asp.net学习 响应的缓冲输出:为了提高服务器的性能,asp.net向浏览器Write的时候默认并不会每Write一次都会 ...

  3. 慕学在线网0.2_users表设计(1)

    1.Django App设计: users-用户管理(任何web中,users表都是第一个被设计的) course-课程管理 organization-机构和教师管理 operation-用户操作管理 ...

  4. 自定义合并列:el-table

    objectSpanMethod({ row, column, rowIndex, columnIndex }) {//合并规则 //当前行row.当前列column.当前行号rowIndex.当前列 ...

  5. tkinter中frame布局控件

    frame控件 frame控件是将窗口分成好几个小模块,然后每个小模块中添加控件. 也就是将窗口合理的布局 由于和其他控件的操作基本一致,就不做注释了 import tkinter wuya = tk ...

  6. URL编码:怎样读取特殊字符

    URL编码:怎样读取特殊字符 (这个我曾经谢过教程,这里整理过来)从外部文本载入到动态文本的时候,一些特殊字符(如&/%等)无法正常现实,有的符号还会导致这个符号后面的字符无法现实(如& ...

  7. nginx代理 upstream轮询

    问题描述 我有2个Tomcat  一个端口开启(8021),一个端口未开启(8022),在nginx里用upstream模块进行代理 ,代理的负载算法采用的是默认的轮询算法,配置成功后,访问页面时并没 ...

  8. IntelliJ IDEA 项目结构旁边出现 0%classes,0% lines covered

    不知道一不小心点到哪里,项目变成如下形式 使用ctrl +  Alt + F6弹出如下框,取消勾选-->点击Show Selected就可以去掉了 官网解释

  9. 关于HashMap自定义key重写hashCode和equals的问题

     使用HashMap,如果key是自定义的类,就必须重写hashcode()和equals() hashcode()和equals()都继承于object,在Object类中的定义为: equals( ...

  10. Hadoop优化 第一篇 : HDFS/MapReduce

    比较惭愧,博客很久(半年)没更新了.最近也自己搭了个博客,wordpress玩的还不是很熟,感兴趣的朋友可以多多交流哈!地址是:http://www.leocook.org/ 另外,我建了个QQ群:3 ...