我用java处理一个jpg图片,通过像素值在图片上画圆,画线等操作。总是不成功,代码如下
String filename= "D:\\map.jpg";
File file = new File("D:\\maptemp.jpg");
FileOutputStream out = new FileOutputStream(file);
//构造一个缓冲的图像。 
Image image = new ImageIcon(filename).getImage();
         //创建一个BufferedImage, 然后把导入的图片先画到这个BufferedImage. 
BufferedImage bufImage = new BufferedImage(image.getWidth(null), image.getHeight(null),  BufferedImage.TYPE_INT_RGB);
Graphics  imageGraphics =   bufImage.getGraphics();   
Point center = new Point(10,10);
Point start =new Point(0,0);
Point end = new Point(100,100);
imageGraphics.drawImage(image, 0,0,null);
         imageGraphics.fillOval((int) center.getX()-2, (int) center.getY()-2,10, 10);
imageGraphics.drawLine((int)start.getX(), (int)start.getY(), (int)end.getX(), (int)end.getY());
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
try {
encoder.encode(bufImage);
} catch (ImageFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}有谁能帮我解决一下,如果有其他方法,能给示例代码最好。急

解决方案 »

  1.   


    import javax.swing.*;
    import javax.imageio.*;
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import java.io.*;
    public class TestDrawImage {
        JFrame frame;
        Container contentPane;
        JPanel pan;
        BufferedImage buffer;
        public TestDrawImage(){
            frame=new JFrame();
            contentPane=frame.getContentPane();
            try{
                buffer=ImageIO.read(new File("002.bmp"));
                Graphics g=buffer.getGraphics();
                g.setColor(Color.red);
                g.setFont(new Font("楷体",Font.PLAIN,40));
                g.drawString("哈哈,我改了", 50, 50);
                FileOutputStream fos=new FileOutputStream("new.bmp");
                ImageIO.write(buffer, "bmp", fos);
                fos.close();
            }catch(IOException e){}
            pan=new JPanel(){
                public void paint(Graphics g){
                    if(buffer!=null){
                        g.drawImage(buffer, 0, 0, null);
                    }
                }
            };
            contentPane.add(pan);
            if(buffer==null){
                frame.setSize(new Dimension(400,400));
            }else{
                frame.setSize(new Dimension(buffer.getWidth(),buffer.getHeight()));
            }
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        public static void main(String args[]){
            new TestDrawImage();
        }
    }