之前使用JPEGCodec做图像缩放,效果蛮好的,但它从jdk1.7开始就被删除了,在eclipse里的时候可以通过设置来让它可以运行,但部署到服务器上的时候出现了找不到类情况。

于是乎去寻找其他方案,就找到了mortennobel包,结合ImageIO对图片处理

maven:

<dependency>
	<groupId>com.mortennobel</groupId>
	<artifactId>java-image-scaling</artifactId>
	<version>0.8.6</version>
</dependency>

图片缩放:

public static void resize(File originalFile, File resizedFile,int newWidth, int newHeight, String formatName) {
	try {
		BufferedImage inputBufImage = ImageIO.read(originalFile);
		ResampleOp resampleOp = new ResampleOp(newWidth, newHeight);// 转换
		BufferedImage rescaledTomato = resampleOp.filter(inputBufImage,null);
		ImageIO.write(rescaledTomato, formatName, resizedFile);
	} catch (IOException e) {
		e.printStackTrace();
	}
}

图片切割:

public final static void cut(File srcImageFile, File result, int x, int y,int width, int height, String formatName) {
	ImageInputStream iis = null;
	try {
		iis = ImageIO.createImageInputStream(srcImageFile);
		Iterator<ImageReader> iterator = ImageIO.getImageReaders(iis);
		ImageReader reader = (ImageReader) iterator.next();
		reader.setInput(iis, true);
		ImageReadParam param = reader.getDefaultReadParam();
		Rectangle rectangle = new Rectangle(x, y, width, height);
		param.setSourceRegion(rectangle);
		BufferedImage bi = reader.read(0, param);
		ImageIO.write(bi, formatName, result);
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		if (iis != null) {
			try {
				iis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

formatName就是像PNG,JPEG这样的文件后缀名。

赞助本站,网站的持续发展离不开你们的支持!一分也是爱ヾ(◍°∇°◍)ノ゙
 本文链接: ,花了好多脑细胞写的,转载请注明链接喔~~
登陆
      正在加载评论