得到一個圖片的尺寸,
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