Java圖片壓縮代碼
復制代碼 代碼如下:
package com
import java
import java
import java
import java
import java
import javax
import com
import com
/**
*
* @author 可樂加糖
*/
public class CompressPicDemo {
private File file = null; // 文件對象
private String inputDir; // 輸入圖路徑
private String outputDir; // 輸出圖路徑
private String inputFileName; // 輸入圖文件名
private String outputFileName; // 輸出圖文件名
private int outputWidth =
private int outputHeight =
private boolean proportion = true; // 是否等比縮放標記(默認為等比縮放)
public CompressPicDemo() { // 初始化變量
inputDir = "";
outputDir = "";
inputFileName = "";
outputFileName = "";
outputWidth =
outputHeight =
}
public void setInputDir(String inputDir) {
this
}
public void setOutputDir(String outputDir) {
this
}
public void setInputFileName(String inputFileName) {
this
}
public void setOutputFileName(String outputFileName) {
this
}
public void setOutputWidth(int outputWidth) {
this
}
public void setOutputHeight(int outputHeight) {
this
}
public void setWidthAndHeight(int width
this
this
}
/*
* 獲得圖片大小
* 傳入參數 String path
*/
public long getPicSize(String path) {
file = new File(path);
return file
}
// 圖片處理
public String compressPic() {
try {
//獲得源文件
file = new File(inputDir + inputFileName);
if (!file
return "";
}
Image img = ImageIO
// 判斷圖片格式是否正確
if (img
System
return "no";
} else {
int newWidth; int newHeight;
// 判斷是否是等比縮放
if (this
// 為等比縮放計算輸出的圖片寬度及高度
double rate
double rate
// 根據縮放比率大的進行縮放控制
double rate = rate
newWidth = (int) (((double) img
newHeight = (int) (((double) img
} else {
newWidth = img
newHeight = img
}
BufferedImage tag = new BufferedImage((int) newWidth
/*
* Image
* 優先級比速度高 生成的圖片質量比較好 但速度慢
*/
tag
FileOutputStream out = new FileOutputStream(outputDir + outputFileName);
// JPEGImageEncoder可適用於其他圖片類型的轉換
JPEGImageEncoder encoder = JPEGCodec
encoder
out
}
} catch (IOException ex) {
ex
}
return "ok";
}
public String compressPic (String inputDir
// 輸入圖路徑
this
// 輸出圖路徑
this
// 輸入圖文件名
this
// 輸出圖文件名
this
return compressPic();
}
public String compressPic(String inputDir
// 輸入圖路徑
this
// 輸出圖路徑
this
// 輸入圖文件名
this
// 輸出圖文件名
this
// 設置圖片長寬
setWidthAndHeight(width
// 是否是等比縮放 標記
this
return compressPic();
}
// main測試
// compressPic(大圖片路徑
public static void main(String[] arg) {
CompressPicDemo mypic = new CompressPicDemo();
System
mypic
}
}
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20319.html