Generador de imágenes Java-JPEG

efecto:
Inserte la descripción de la imagen aquí

Código de implementación:

package jpeg;

import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;


public  class  MakeJPEG  extends  Canvas  implements MouseMotionListener,MouseListener,ActionListener{
    
    
private static final long serialVersionUID = 1L;
      int x=-1,y=-1,橡皮擦通知=0,清除通知=0;
      Vector v=null;
      int n=1;
      Graphics2D ggg;
      BufferedImage image;Frame window;

      Button 保存,调色板,橡皮,清除,画笔,获取屏幕,绘制图形;
      Color 画笔颜色;

      Panel pCenter,pSouth,pNorth;
      public MakeJPEG(){
    
    

      保存=new Button("将绘制的图形或屏幕保存为JPG文件");
      获取屏幕=new Button("获取屏幕");
      绘制图形=new Button("绘制图形");
      调色板=new Button("打开调色板");
      画笔=new Button("画笔");
      橡皮=new Button("橡皮");
      清除=new Button("清除");

      调色板.addActionListener(this);
      绘制图形.addActionListener(this);
      保存.addActionListener(this);
      画笔.addActionListener(this);
      橡皮.addActionListener(this);
      清除.addActionListener(this);
      获取屏幕.addActionListener(this);
      画笔颜色=new Color(0,0,0);
    addMouseMotionListener(this);addMouseListener(this);
    
    v=new Vector();

    setBackground(Color.white);
    image =new BufferedImage(400,400,BufferedImage.TYPE_INT_RGB);
    ggg=image.createGraphics();
    Rectangle2D rect= new Rectangle2D.Double(0,0,400,400);
    ggg.setColor(getBackground());
    ggg.fill(rect);
    
    window=new Frame("JPEG图像生成器");
    pCenter=new Panel();
    pCenter.setLayout(null);
    pCenter.add(this);
    pCenter.setBackground(Color.gray);
    this.setBounds(80,30,210,210);
    window.add(pCenter,BorderLayout.CENTER);
    pNorth=new Panel();
    pNorth.add(保存);
    pNorth.add(绘制图形);
    pNorth.add(获取屏幕);
    window.add(pNorth,BorderLayout.NORTH);
    
    pSouth=new Panel();
    pSouth.add(调色板);
    pSouth.add(橡皮);
    pSouth.add(清除);
    pSouth.add(画笔);
    window.add(pSouth, BorderLayout.SOUTH);
    window.setVisible(true);

    window. addWindowListener(new WindowAdapter() {
    
    
    public void windowClosing( WindowEvent e) {
    
    
    System.exit(0);}});

    window. setBounds(100,80,390,380);
    window.validate();}

public void paint(Graphics g) {
    
    

    if(x!=-1&&y!=-1&&橡皮擦通知 ==0&&清除通知==0) {
    
    

    g.setColor(画笔颜色);
    n=v.size();

    for(int i=0;i<n-1;i++) {
    
    
    Point p1=(Point)v.elementAt(i);
    Point p2=(Point)v.elementAt(i+1);
    g.drawLine(p1.x,p1.y,p2.x,p2.y);
    ggg.setColor(g.getColor());
    ggg. drawLine(p1.x,p1.y,p2.x,p2.y);}}
      else if(橡皮擦通知==1&&清除通知==0) {
    
    
        g.setColor(getBackground());
        g.fillRect(x-2,y-2,4,4);
        ggg.setColor(getBackground());
        ggg.fillRect(x-2,y-2,4,4);}
      else if(清除通知== 1&&橡皮擦通知==0) {
    
    
        g.setColor(getBackground());
        g.fillRect(0,0,200,200);
        ggg.setColor(getBackground());
        ggg.fillRect(0,0,200,200);}
        g.drawImage(image,0,0,200,200,this);}
                 
public void mouseDragged(MouseEvent e) {
    
    
          x=(int)e.getX();
          y=(int)e.getY();
          Point p=new Point(x,y);
          v.addElement(p);
          repaint();}

public void mouseMoved(MouseEvent e) {
    
    }
public void mousePressed(MouseEvent e) {
    
    }
public void mouseReleased(MouseEvent e) {
    
    
          v.removeAllElements();}

public void mouseEntered(MouseEvent e) {
    
    }
public void mouseExited(MouseEvent e) {
    
    }
public void mouseClicked(MouseEvent e) {
    
    }
public void update(Graphics g) {
    
    {
    
    
     paint(g);}}

public void actionPerformed(ActionEvent e) {
    
    
if(e.getSource() ==橡皮) {
    
    
    橡皮擦通知=1;
    清除通知=0;}

else if(e.getSource()== 清除) {
    
    
	橡皮擦通知=0;
	清除通知=1;
	repaint();}
else if(e. getSource()==画笔) {
    
    
	橡皮擦通知=0;
	清除通知=0;}
else if(e.getSource()==保存) {
    
    
FileDialog  savedialog= new FileDialog(window,"保存图形到JPG格式",FileDialog.SAVE);
savedialog.setVisible(true);



if(savedialog.getFile() !=null) {
    
    
    try {
    
    
             String fileName =savedialog.getFile();
             FileOutputStream out= new FileOutputStream(fileName);
             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
             JPEGEncodeParam param=encoder.getDefaultJPEGEncodeParam(image);
             param.setQuality(1.0f,false);
             encoder.setJPEGEncodeParam(param);
             encoder.encode(image);
             out.close();}catch(Exception EE) {
    
    }
}}
else if(e. getSource()== 获取屏幕) {
    
    
               Robot robot= null;
                      try {
    
    
                            robot =new  Robot();}catch(Exception er) {
    
    }
                      
                      Rectangle screenRect =null;
                      int width= getToolkit().getScreenSize().width;
                      int height=getToolkit().getScreenSize().height;
                      screenRect=new Rectangle(0,0,width,height);

                      window.setVisible(false);
                      this.window.setVisible( false);
                      image=robot.createScreenCapture(screenRect);
                      window.setVisible(true);
                      repaint();}

                      else if(e.getSource()==调色板) {
    
    
                      Color tempColor =JColorChooser.showDialog(window,"调色板",画笔颜色);{
    
    
                      if(tempColor!=null) {
    
    
                                                           画笔颜色=tempColor;
                                                           画笔.setForeground(画笔颜色);}}}

                      else if(e.getSource()==绘制图形) {
    
    
                      window.dispose();
                      this.window.dispose();}}
                      //MakeJPEG canvas= new MakeJPEG();

                public static void main(String args[]) {
    
    

                      new MakeJPEG();}}  

Supongo que te gusta

Origin blog.csdn.net/GodOuO/article/details/104727800
Recomendado
Clasificación