0
点赞
收藏
分享

微信扫一扫

java图片的压缩算法


import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;

/**
* 功能说明: 图片压缩
* 功能描述: 图片压缩
*/
public class CompressUtils {

public static byte[] fromBufferedImage2(BufferedImage img, String imagType) throws IOException {
// 得到指定Format图片的writer
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(imagType);
ImageWriter writer = iter.next();

//ByteOutputStream bos = new ByteOutputStream();
File outFile = new File("C:\\Users\\Desktop\\c.jpg");
try (OutputStream out = new FileOutputStream(outFile)) {
ImageWriteParam param = writer.getDefaultWriteParam();
if (param.canWriteCompressed()) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
// 设置压缩质量参数
param.setCompressionQuality(0.5f);
param.setProgressiveMode(ImageWriteParam.MODE_DISABLED);
// 指定压缩时使用的色彩模式
ColorModel colorModel = img.getColorModel();
param.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel,
colorModel.createCompatibleSampleModel(img.getWidth(), img.getHeight())));
writer.setOutput(ImageIO.createImageOutputStream(out));
IIOImage iIamge = new IIOImage(img, null, null);
writer.write(null, iIamge, param);
writer.dispose();
}
return null;
}
}
}


举报

相关推荐

0 条评论