java图片失真_Java对图片不失真地缩放

本文介绍了在Java中如何使用mortennobel库结合ImageIO进行图片不失真缩放和切割。在JPEGCodec不再可用的情况下,通过引入java-image-scaling库(版本0.8.6)解决图片处理问题。提供了resize()方法用于缩放图片,cut()方法用于切割图片,并详细说明了方法的参数和使用示例。
摘要由CSDN通过智能技术生成

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

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

maven:

com.mortennobel

java-image-scaling

0.8.6

图片缩放:

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 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这样的文件后缀名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值