编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

通过java进行图片压缩(java压缩图片大小)

wxchong 2024-07-26 22:55:09 开源技术 9 ℃ 0 评论

package ydysz.tools;

import java.awt.image.BufferedImage;

import java.awt.image.ColorModel;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import javax.imageio.IIOImage;

import javax.imageio.ImageIO;

import javax.imageio.ImageWriteParam;

import javax.imageio.ImageWriter;

/**

* 图片压缩

* 像素不变,内存压缩

* @author dellpc

*/

public class ImagecompressPic{

public static boolean compressPic(String srcFilePath, String descFilePath) throws IOException {

File file = null;

BufferedImage src = null;

FileOutputStream out = null;

ImageWriter imgWrier;

ImageWriteParam imgWriteParams;

// 指定写图片的方式为 jpg

imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();

imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(

null);

// 要使用压缩,必须指定压缩方式为MODE_EXPLICIT

imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);

// 这里指定压缩的程度,参数qality是取值0~1范围内,

imgWriteParams.setCompressionQuality((float)0.1);

imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);

ColorModel colorModel = ImageIO.read(new File(srcFilePath)).getColorModel();// ColorModel.getRGBdefault();

// 指定压缩时使用的色彩模式

// imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(

// colorModel, colorModel.createCompatibleSampleModel(16, 16)));

imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(

colorModel, colorModel.createCompatibleSampleModel(16, 16)));

try {

if (isBlank(srcFilePath)) {

return false;

} else {

file = new File(srcFilePath);

src = ImageIO.read(file);

out = new FileOutputStream(descFilePath);

imgWrier.reset();

// 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何

// OutputStream构造

imgWrier.setOutput(ImageIO.createImageOutputStream(out));

// 调用write方法,就可以向输入流写图片

imgWrier.write(null, new IIOImage(src, null, null),

imgWriteParams);

out.flush();

out.close();

}

} catch (Exception e) {

e.printStackTrace();

return false;

}

return true;

}

public static boolean isBlank(String string) {

if (string == null || string.length() == 0 || string.trim().equals("")) {

return true;

}

return false;

}

public static void main(String[] args) {

try {

ImagecompressPic.compressPic("C:\\Users\\dellpc\\Desktop\\test.jpg", "C:\\Users\\dellpc\\Desktop\\CC.jpg");

} catch (IOException e) {

e.printStackTrace();

}

}

}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表