如何保存图像? [英] how to save the image?

查看:84
本文介绍了如何保存图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我有这个代码,我用的是drawPad。如何将我在drawPad中绘制的图像保存为png文件?



Hello, I have this code, and i use drawPad. how to save the image that I have draw in the drawPad as png file?

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;


public class UserInterface 
{
    public static void main(String[] args) 
        {
                JFrame projectFrame = new JFrame();
                projectFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
                JPanel projectPanel = new JPanel();
                JPanel btnPanel = new JPanel();
                JButton encode = new JButton("ENCODE");
                JButton decode = new JButton("DECODE");
                
                encode.addActionListener(new ButtonListener());
                decode.addActionListener(new ButtonListener());
    
                projectFrame.setSize(600,500);
                projectFrame.setTitle("ONLINE SIGNATURE STEGANOGRAPHY");  
                projectFrame.setResizable(true);
                projectPanel.setLayout(new FlowLayout());
                
                JLabel stego = new JLabel("ONLINE SIGNATURE STEGANOGRAPHY SYSTEM");
                stego.setFont(new Font("Tahoma", Font.BOLD, 20));
                 
                projectFrame.add(projectPanel);
                projectFrame.add(btnPanel, BorderLayout.PAGE_END);
                projectPanel.add(stego);
                btnPanel.add(encode);
                btnPanel.add(decode);
                projectFrame.setVisible(true);
        }
        
        static class ButtonListener implements ActionListener   
 {         
  public void actionPerformed(ActionEvent ae) 
  {
   if(ae.getActionCommand().equals("ENCODE"))
   {
    new encodePane();
   }
   if(ae.getActionCommand().equals("DECODE"))
   {
    new decodePane();
   }
     
  }
 }
}
        

        class encodePane
        {

           public encodePane() 
            {
  final JFrame encodeFrame = new JFrame();
                Container content = encodeFrame.getContentPane();
                content.setLayout(new BorderLayout());
                JPanel encodePanel = new JPanel();
                JPanel buttonPanel = new JPanel();
                
                final PadDraw drawPad = new PadDraw();
                content.add(drawPad, BorderLayout.CENTER);
                
                JButton cancelBtn = new JButton("CANCEL");
                cancelBtn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                encodeFrame.dispose();
                }
                });
  
                JButton proceedBtn = new JButton("PROCEED");
                proceedBtn.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e){
                     new encode1Pane();
                     encodeFrame.dispose();
                     }   
                });  
                
                JButton clearButton = new JButton("CLEAR");
                //creates the clear button and sets the text as "Clear"
                clearButton.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e){
                                drawPad.clear();
                        }
                });
                
                JLabel Sign = new JLabel("Sign here:", SwingConstants.CENTER);
                Sign.setVerticalAlignment(SwingConstants.TOP);
                                                              
               // proceedBtn.addActionListener(new Button1Listener());
                                
                encodeFrame.setTitle("ENCODE SECTION");
                encodeFrame.setLocationRelativeTo(null);   
                encodeFrame.setSize(600,500); 
                encodeFrame.setResizable(true);
                encodePanel.setLayout(new FlowLayout());
                
                encodePanel.add(Sign);
                                                 
                encodeFrame.add(encodePanel, BorderLayout.NORTH);
                encodeFrame.add(buttonPanel, BorderLayout.SOUTH);
                                                
                buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS));
                buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
                buttonPanel.add(Box.createHorizontalGlue());
                buttonPanel.add(clearButton);
                buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
                buttonPanel.add(cancelBtn);
                buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
                buttonPanel.add(proceedBtn);
                
                Sign.setFont(new Font("Serif", Font.ITALIC, 14));
                encodeFrame.setVisible(true);
 }
           
         
        /*static class Button1Listener implements ActionListener 
  {   
   public void actionPerformed(ActionEvent ae)  
   {
    if(ae.getActionCommand().equals("PROCEED"))
    {
                                    new encode1Pane();
                                }
                                                               
                        }
  }*/
       }

       class PadDraw extends JComponent{

            Image image;
            Graphics2D graphics2D;
            int currentX, currentY, oldX, oldY;

            public PadDraw(){
                setDoubleBuffered(false);
                addMouseListener(new MouseAdapter(){
                    public void mousePressed(MouseEvent e){
                        oldX = e.getX();
                        oldY = e.getY();
                    }
                });
            addMouseMotionListener(new MouseMotionAdapter(){
                public void mouseDragged(MouseEvent e){
                    currentX = e.getX();
                    currentY = e.getY();
                    if(graphics2D!=null)
                        graphics2D.drawLine(oldX, oldY, currentX, currentY);
                    repaint();
                    oldX = currentX;
                    oldY = currentY; 
                }
            });
            }
       public void paintComponent(Graphics g){
           if(image==null){
               image = createImage(getSize().width, getSize().height);
               graphics2D = (Graphics2D)image.getGraphics();
               graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
               clear();
               
               }
           g.drawImage(image,0,0,null);
       }
       
       public void clear(){
           graphics2D.setPaint(Color.white);
           graphics2D.fillRect(0,0,getSize().width, getSize().height);
           graphics2D.setPaint(Color.black);
           repaint();
       }

}

       class encode1Pane
       {
           public encode1Pane()
           {
              final JFrame encode1Frame = new JFrame();
              JPanel Enc = new JPanel();
              JPanel enc = new JPanel();
              JPanel Btn = new JPanel();
              JButton prcd = new JButton ("ENCODE");
              JLabel sec = new JLabel ("Your message");
              final JTextField secText = new JTextField ("");
              secText.setPreferredSize(new Dimension (500, 100));
              JLabel name = new JLabel ("Set the file name");
              final JTextField name2 = new JTextField ();
              name2.setPreferredSize(new Dimension (200, 20));
              JButton cncl = new JButton ("CANCEL");
              cncl.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                new encodePane();
                encode1Frame.dispose();
                }
                });
              
                            
              encode1Frame.setTitle("ENCODE SECTION");
              encode1Frame.setLocationRelativeTo(null);   
              encode1Frame.setSize(600,500);
              encode1Frame.setResizable(true);
                            
              Enc.add(sec);
              Enc.add(secText);
              secText.setBounds(30, 50, 200, 25);
              enc.add(name);
              enc.add(name2);
              name2.setBounds(30, 50, 200, 25);
              encode1Frame.add(Btn, BorderLayout.SOUTH);
              encode1Frame.add(Enc, BorderLayout.NORTH);
              encode1Frame.add(enc, BorderLayout.CENTER);
              encode1Frame.setVisible(true);   
                            
              Btn.setLayout(new BoxLayout(Btn, BoxLayout.LINE_AXIS));
              Btn.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
              Btn.add(Box.createHorizontalGlue());
              Btn.add(cncl);
              Btn.add(Box.createRigidArea(new Dimension(10, 0)));
              Btn.add(prcd);
                
              
              sec.setFont(new Font("Serif", Font.ITALIC, 14));
              name.setFont(new Font("Serif", Font.ITALIC, 14));
              //cncl.addActionListener(new Button2Listener());
              prcd.addActionListener(new Button2Listener());
               
       }
           
           static class Button2Listener implements ActionListener 
  {   
   public void actionPerformed(ActionEvent ae)  
   {
    if(ae.getActionCommand().equals("Proceed"))
    {
      //new encodeOutput();
    }    
   }
                 }
       }

            
        class decodePane 
            {
               public decodePane() 
                {
                    JFrame decodeFrame = new JFrame();
                    decodeFrame.add(new UploadImage());
                           
                }}

推荐答案

使用文件>保存>保存图像以将当前视图作为图像文件保存到计算机的硬盘驱动器中。保存图像时,会出现保存对话框,您可以在计算机上找到要将图像保存到的文件夹,就像您可能保存的任何文档一样。图像将与3D查看器中可见的所有可见地标,边框或其他图层信息一起保存。
Use File > Save > Save Image to save the current view as an image file to your computer''s hard drive. When you save an image, a Save dialog box appears and you can locate a folder on your computer to save the image to, just as you would for any document you might save. The image is saved with all visible placemarks, borders, or other Layer information visible in the 3D viewer.


您必须保存图形对象。

这是一个例子
You have to save the graphis object.
Here is an example


这篇关于如何保存图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆