日期:2014-05-20  浏览次数:20854 次

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();
        }
    }