2010年2月9日
private void compressImageFile() {
JFileChooser fileChooser = new JFileChooser("d://");
fileChooser.showOpenDialog(this);
File file = fileChooser.getSelectedFile();
if (null != file && file.exists()) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image srcImage = toolkit.getImage(file.getAbsolutePath()); // 构造Image对象
int wideth = -1;
int height = -1;
boolean flag = true;
while (flag) {
wideth = srcImage.getWidth(null); // 得到源图宽
height = srcImage.getHeight(null); // 得到源图长
System.out.println("wideth:" + wideth + " height:" + height);
if (wideth > 0 && height > 0) { // 因为 Toolkit.getImage 是异步读取,如果
// wideth 和 height
// 都大于0,表明图片已经加载完毕
// imageCanvas.setImage(srcImage);
flag = false;
} else {
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 加载完毕,输出
int w = 1024;
float s = (float) wideth / 1024.0f;
int h = (int) ((float) height / s);
BufferedImage bufferedImage = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
// bufferedImage.getGraphics().drawImage(srcImage, 0, 0, 1024,
// 768, null); // 绘制缩小后的图
boolean flag2 = false;
while (!(flag2 = bufferedImage.getGraphics().drawImage(srcImage, 0,
0, w, h, this))) {
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
}
try {
File outputFile = new File("d://hhh.jpg");
if (!outputFile.exists()) {
outputFile.createNewFile();
}
FileOutputStream out = new FileOutputStream(outputFile); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bufferedImage); // 近JPEG编码
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
posted @
2010-02-09 15:37 Mr. Michael.Q 阅读(208) |
评论 (0) |
编辑 收藏