常用的java等比壓縮圖檔方法:
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.dagong.querySystem.entity.ConstantInfo;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* 圖檔壓縮處理
*/
public class ZipImgUtil {
private Image img;
private int width;
private int height;
private static String urlImg2; //定義全局變量友善傳位址
/**
* 添加有參和無參構造函數
*/
public ZipImgUtil(){}
public ZipImgUtil(String imgPath) throws IOException {
File file = new File(imgPath);// 讀入檔案
img = ImageIO.read(file); // 構造Image對象
width = img.getWidth(null); // 得到源圖寬
height = img.getHeight(null); // 得到源圖長
}
/**
* 确定是按照寬度還是高度進行壓縮
* @param h int 最大高度
* @param w int 最大寬度
*/
public void resizeFix(int h, int w) throws IOException {
if ( height/ width > h / w) {
resizeByWidth(h);
} else {
resizeByHeight(w);
}
}
/**
* 以高度為基準,等比例放縮圖檔
* @param h int 新高度
*/
public void resizeByWidth(int h) throws IOException {
int w = (int) ( width* h / height);
resize(h, w);
}
/**
* 以寬度為基準,等比例縮放圖檔
* @param w int 新寬度
*/
public void resizeByHeight(int w) throws IOException {
int h = (int) ( height* w /width );
resize(h, w);
}
/**
* 進行強制壓縮/放大圖檔到固定的大小
* @param w int 新寬度
* @param h int 新高度
*/
public void resize(int h, int w) throws IOException {
//參數是TYPE_3BYTE_BGR時,圖檔最清晰!
BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_3BYTE_BGR );
image.getGraphics().drawImage(img, 0, 0, w,h, null); // 繪制縮小後的圖像
//存放的位址
File destFile = new File(urlImg2);
FileOutputStream out = new FileOutputStream(destFile); // 輸出檔案流
// 可以正常實作bmp、png、gif、jpg等圖檔壓縮
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image); //編碼
out.close(); //關閉流
}
/**
*
* @方法功能說明: 壓縮圖檔檔案的方法
* @修改者名字: yang
* @修改日期: 2015-11-11
* @修改次數:1
* @參數: @param imgPath="F:/123.png";
* @參數: @throws Exception
* @傳回值 void
*/
public void comparessImg(String imgPath) throws Exception {
//執行個體對象
StringBuffer img=new StringBuffer(imgPath);
urlImg2=img.toString();
//有參構造方法
ZipImgUtil imgCom = new ZipImgUtil(img.toString());
//壓縮
imgCom.resizeFix(ConstantInfo.IMG_HEIGHT, ConstantInfo.IMG_WIDTH);
}
}