GraphicsMagick(http://www.graphicsmagick.org/)被称为图片处理的瑞士军刀,它的功能包括:

  • Convert an image from one format to another (e.g. TIFF to JPEG)
  • Resize, rotate, sharpen, color reduce, or add special effects to an image
  • Create a montage of image thumbnails
  • Create a transparent image suitable for use on the Web
  • Compare two images
  • Turn a group of images into a GIF animation sequence
  • Create a composite image by combining several separate images
  • Draw shapes or text on an image
  • Decorate an image with a border or frame
  • Describe the format and characteristics of an image

Linux下安装GraphicsMagick

1)安装libpng(http://libmng.com/pub/png/libpng.html):

tar -zxvf libpng-1.6.14.tar.gz
cd libpng-1.6.14
./configure
make
make install

2)安装jpeg-9a(http://www.ijg.org/):

tar -zxvf jpegsrc.v9a.tar.gz
cd jpeg-9a
./configure
make
make install

3)安装GraphicsMagick:

tar -zxvf GraphicsMagick-1.3.20.tar.gz
cd GraphicsMagick-1.3.20
./configure
make
make install

使用GraphicsMagick

输入gm可以得到该命令的使用说明,例如对以下490*326的图片先缩放到原来的50%至245*164再居中裁剪出164*164的正方形图片的命令是:

gm convert -quality 100 -resize 245×164 -crop 164×164+40+0 +profile “*” old.jpg new.jpg

其中,“-quality 100”表示图片质量,“-resize 245×164”表示将图片尺寸调整至245*164,“-crop 164×164+40+0”表示从坐标(40,0)开始裁剪出164*164的图片,+profile “*”表示不保留exif信息。

old
old.jpg
new
new.jpg

在Java中处理图片

在Java中可以通过im4java调用gm命令处理图片,上述对图片进行缩放再裁剪的操作在Java中可以通过以下代码实现:

基于WebSocket实现微信小程序的消息推送

微信小程序支持通过基于WebSocket进行消息推送,提供了相应的API,例如创建连接示例代码: JavaScript wx.connectSocket({ ...

阅读全文

基于nginx-sticky-module-ng实现会话保持(Sticky Sessions)

对服务进行集群部署,前端进行负载均衡时,需要实现会话保持,对于同一会话的多个请求,通过集群中的一个节点来提供服务。系统的部署结构如图所示,通过Resin...

阅读全文

ActiveMQ基于Zookeeper和LevelDB实现Master/Slave

ActiveMQ的Master/Slave目前支持三种实现方式: 1)Shared File System Master Slave; 2)JDBC Master Slave; 3)Replicated LevelDB Store。 对于第三种方...

阅读全文