我在用JAVA写图象编辑器,基本功能实现了,现在输出JPG格式图象时,不知道怎么输出好,老是搞不定
我是测试时是这样输出的,
image = new BufferedImage(600, 600, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.WHITE);
g2.fillRect(0,0,600,600);
g2.setColor(Color.RED);
Ellipse2D.Double   tail = new Ellipse2D.Double(100,100,300,300);
g2.draw(tail);
g2.drawString(" おはようございます",100,100);

Iterator iter = ImageIO.getImageWritersByFormatName("JPEG");
ImageWriter writer = (ImageWriter) iter.next();
try {
ImageOutputStream imageOut = ImageIO.createImageOutputStream(new File("d:\\chuanmin.jpg"));
writer.setOutput(imageOut); writer.write(new IIOImage(image, null, null));
    IIOImage iioImage = new IIOImage(image, null, null);
    if (writer.canInsertImage(0))
writer.writeInsert(0, iioImage, null);
}
catch (IOException exception) 
{
exception.printStackTrace();
}
createJpg("d:\\draw.jpg");
没有问题,但是,在我的程序中这样就不行,因为,这里必须要建立一个BufferedImage对象,来获得Graphics 对象,我是在JPANEL上花的,如果在JPANEL的paintComponent(Graphics g){中绘图时,不在g上绘制,而是在image = new BufferedImage(600, 600, BufferedImage.TYPE_INT_RGB);
Graphics g2 = image.getGraphics();获得的g2 上绘制,画图拖动就有问题,乱七八糟的,请问有没有经验的朋友告诉我下,谢谢,主要是JPEG格式或者GIF,PNG格式的输出,谢谢.
}

解决方案 »

  1.   

    你在BufferedImage中画,需要显示时再把这个BufferedImage画到JPanel上
      

  2.   

    BufferedImage中图片的大小我要跟着实际画的图的大小而变化,
      

  3.   

    你可以把你的BufferedImage设大一点,和你的JPanel一样大就可以了
    这样你在BufferedImage上就可以画图了,画完图就可以把它直接显示在你的Jpanel上
    并且你要保存就可以直接保存BufferedImage就可以了