swing 保存图片的问题
用 java swing 开发,在图片的任一位置,g.drawOval(point[0].x, point[0].y, width, height); 画了一个椭圆,我现在要保存这个图片到本地,同时要把在这个图片上的椭圆也同时保存在图片上,请问怎么做哦?
------解决方案--------------------画矩形,保存到本地的代码:
BufferedImage bufferImage = new BufferedImage(1024, 768, 1);
Rectangle2D rect = new Rectangle2D.Double(20, 50, 40, 80);
Graphics2D g2d = ((Graphics2D) bufferImage.getGraphics());
g2d.draw(rect);
g2d.dispose();
OutputStream out = null;
try {
out = new FileOutputStream("D:\\paint.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bufferImage);
param.setQuality(0.75f, true);
encoder.encode(image, param);
out.flush();
out.close();
} catch (Exception e1) {
e1.printStackTrace();
}
------解决方案--------------------Java code
/**
* 保存文件
*
* @param file:文件路径
*/
private void save(String file) {
BufferedOutputStream imageOut;
try {
imageOut = new BufferedOutputStream(new FileOutputStream(new File(
file)));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(imageOut);
// getAreaImage()方法返回的是一个BufferedImage对象
// 只需把你的图像转换成BufferedImage对象放进去即可
encoder.encode(getAreaImage());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ImageFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}