java 图片压缩、可十倍压缩

/**
* 判断是否为图片
*/
if (hdfs_path.toString().indexOf(".jpg") > -1 || hdfs_path.toString().indexOf(".sign") > -1
|| hdfs_path.toString().indexOf(".jpeg") > -1) {

Image img = ImageIO.read(method.getResponseBodyAsStream());
/**
* 为等比缩放计算输出的图片宽度及高度
*/
double dRate1 = ((double) img.getWidth(null)) / 300 + 0.1;
double dRate2 = ((double) img.getHeight(null)) / 300 + 0.1;
/**
* 根据缩放比率大的进行缩放控制
*/
double rate = dRate1 > dRate2 ? dRate1 : dRate2;
int iW = (int) (((double) img.getWidth(null)) / rate);
int iH = (int) (((double) img.getHeight(null)) / rate);
BufferedImage tag = new BufferedImage(iW, iH, BufferedImage.TYPE_INT_RGB);
/**
* Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢
*/

tag.getGraphics().drawImage(img.getScaledInstance(iW, iH, Image.SCALE_FAST), 0, 0, null);

/**
* JPEGImageEncoder可适用于其他图片类型的转换
*/
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(byteArrayOut);
encoder.encode(tag);
} else {
this.dealResponse(method.getResponseBodyAsStream(), byteArrayOut);
}

posted @ 2017-04-14 11:33  zhaohc2279  阅读(744)  评论(0编辑  收藏  举报