图片裁剪整理

图片裁剪,核心思想是指定起始点坐标和相对于起始点坐标的偏移向量,这样就可以精确的指定被裁减图片中的一个矩形区域。

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
String name = "D:/wiz/1.jpg";
String subpath = "D:/wiz/2.jpg";
ImageInputStream iis = ImageIO.createImageInputStream(new FileInputStream(name));
Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader = it.next();
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
Rectangle rect = new Rectangle(100, 200, 320, 525);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0, param);
ImageIO.write(bi, "jpg", new File(subpath));

这样就可以将D:/wiz/1.jpg以(100,100)为起点,以(320,525)为向量裁剪出一个矩形。图片左上角为(0,0),向右向下为正方向。
假如超出图片范围,则按向量与图片边界的交点为向量终点处理。


下面使用Nodejs的解决方案,使用的库是GraphicsMagick

crop
Crops the image to the given width and height at the given x and y position.

1
gm("img.png").crop(width, height, x, y)

待丰富