`
梦在古稀
  • 浏览: 10326 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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.*;
class Point
{int x,y;
Point(int x,int y)
{this.x=x;this.y=y;
}
}
public class MakeJPEG extends Canvas implements MouseMotionListener,MouseListener,ActionListener

   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(200,200,BufferedImage.TYPE_INT_RGB);
    ggg=image.createGraphics();                                
    Rectangle2D rect=new Rectangle2D.Double(0,0,200,200);     
    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()==清除)
       {
         清除通知=1;
         橡皮擦通知=0;
         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();
  }
}
分享到:
评论

相关推荐

    jpeg_toolbox (1).zip_jpeg_jpeg toolbox_jpeg_toolbox

    JPEG Toolbox 是一个专门为处理JPEG(Joint Photographic Experts Group)图像格式设计的工具箱,主要包含对JPEG文件的读取和写入功能。JPEG是一种广泛使用的有损图像压缩标准,适用于存储和传输高质量的彩色图像。...

    ITU-T.83-JPEG-标准协议.pdf.zip_JPEG 标准协议_JPEG协议_JPEG标准_jpeg_jpeg pdf

    JPEG(Joint Photographic Experts Group)是一种广泛应用于数字图像和照片的有损压缩标准,由国际电信联盟(ITU)下属的T.83工作组制定。这个标准定义了一套算法,能够将高分辨率、色彩丰富的图像数据压缩到较小的...

    JPEG2000_jpeg2000matlab_JPEG2000_zip_

    这个压缩包“JPEG2000_jpeg2000matlab_JPEG2000_zip_”显然是与JPEG2000标准相关的MATLAB实现,这将帮助我们理解和应用JPEG2000技术。 JPEG2000的核心是基于离散小波变换(DWT)的编码方法,相比JPEG中的离散余弦...

    JPEG压缩编码系统源代码.rar_jpeg_jpeg 压缩_jpeg压缩编码_jpeg鍘嬬缉_压缩编码

    JPEG(Joint Photographic Experts Group)是一种广泛应用于数字图像和照片的有损压缩标准,它能够有效地减小图像文件的大小,以便于存储和传输。JPEG压缩编码系统是JPEG标准的核心部分,涉及到图像处理、数字信号...

    基于Matlab的JPEG图像压缩编解码的设计与实现_jpeg压缩matlab_JPEG压缩MATLAB实现_jpeg_jpeg

    在图像处理领域,JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩标准,它能够有效地减少图像文件的大小,从而节省存储空间和网络传输时间。本篇文章将深入探讨如何利用MATLAB进行JPEG图像的压缩...

    jpeg2000.rar_JPEG2000解压_image compression_jpeg2k matlab_图像压缩_图像压

    JPEG2000是一种先进的数字图像压缩标准,它在2000年由国际电信联盟(ITU)和国际标准化组织(ISO)联合推出,是JPEG(Joint Photographic Experts Group)的升级版。相比于传统的JPEG,JPEG2000具有更高的压缩效率、...

    Jpeg.lib文件,编译版本jpeg9c

    JPEG(Joint Photographic Experts Group)是一种广泛用于存储和传输数字图像的有损压缩标准。它在互联网、照片存储和许多其他领域中具有重要的地位。在本主题中,我们主要关注的是`jpeg.lib`文件,这是一个与JPEG...

    jpeglib 支持读取内存JPEG图像的修改版

    JPEG(Joint Photographic Experts Group)是一种广泛用于存储和传输数字图像的有损压缩标准。jpeglib是用于处理JPEG图像的C语言库,它提供了一系列的API接口,方便开发者进行JPEG图像的编码、解码和处理。这个...

    C++ jpeg图像编码与解码_C++jpeg图像编码与解码_C++JPEG编码_jpeg论文c++_

    在图像处理领域,JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩标准,用于存储和传输数字图像。本文将深入探讨C++中JPEG图像的编码与解码过程,以及相关的技术要点。 首先,理解JPEG编码的...

    基于jpeg-9d编译的windows版本JPEG开发库以及工程源码

    JPEG(Joint Photographic Experts Group)是一种广泛用于图像压缩的标准,其在数字图像处理领域具有重要地位。`libjpeg`是一个开源的JPEG编码和解码库,它为开发者提供了处理JPEG图像的功能。`jpeg-9d`是libjpeg的...

    JPEG_LS.rar_JPEG-LS_JPEG无损压缩_lossless_图像压缩代码_无损图像压缩

    **JPEG_LS.rar** 是一个包含JPEG-LS标准的源代码实现的压缩文件,该标准是一种无损或近无损的图像压缩方法。无损压缩意味着在解压后,原始数据可以完全恢复,没有任何质量损失。这与有损压缩如JPEG(Joint ...

    代码_matlab_jpeg_jpeg编码解码_

    在图像处理领域,JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩标准,尤其适用于照片和其他连续色调的图像。MATLAB作为一个强大的数值计算和数据分析环境,提供了方便的工具来实现JPEG编码和...

    Jpeglib.lib文件

    JPEGlib.lib文件是JPEG图像编码和解码库的链接库,它是JPEG(Joint Photographic Experts Group)标准在C语言环境中实现的一部分。JPEG是一种广泛使用的有损图像压缩格式,尤其适用于照片和其他连续色调的图像。这个...

    JPEG图像编码标准

    JPEG(Joint Photographic Experts Group)是一种广泛使用的有损数字图像压缩标准,由ISO和IEC于1986年联合成立的专家委员会制定。它的主要目的是为了减少图像文件的大小,以便于存储和传输,同时尽可能保持图像的...

    JPEG的verilog代码

    JPEG(Joint Photographic Experts Group)是一种广泛使用的有损图像压缩标准,主要应用于数码照片和互联网图像传输。在FPGA(Field-Programmable Gate Array)上实现JPEG编码或解码可以提供高效、实时的图像处理...

    jpeg的matlab代码

    JPEG(Joint Photographic Experts Group)是一种广泛使用的有损图像压缩标准,它通过去除人眼不易察觉的图像细节来实现高效的数据压缩。在MATLAB中实现JPEG编码和解码可以帮助我们理解其背后的算法原理。MATLAB作为...

    MATLAB版的JPEG编解码

    标题 "MATLAB版的JPEG编解码" 涉及的是使用MATLAB实现JPEG(Joint Photographic Experts Group)图像压缩标准的过程。JPEG是一种广泛使用的有损图像压缩算法,尤其适用于照片和其他连续色调的图像。其核心原理包括...

    C++实现的JPEG压缩算法_c/c++编程实现jpeg图像压缩,将灰度图数据转为jpeg压缩格式的编码文件

    在图像处理领域,JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩标准,尤其适用于照片和其他连续色调的图像。本项目是用C++语言实现的JPEG压缩算法,旨在帮助开发者理解和应用JPEG压缩技术。...

    JPEG2000压缩算法C++实现

    JPEG2000是一种先进的数字图像压缩标准,它在2000年由国际电信联盟(ITU)和国际标准化组织(ISO)联合推出,是JPEG(Joint Photographic Experts Group)的升级版。相比于传统的JPEG,JPEG2000具有更高的压缩效率、...

    JPEGDecoder.rar_JPEG解码 verilog_jpeg verilog 解码_jpeg解码verilog_ver

    JPEGDecoder.rar 文件包含了一个JPEG解码器的Verilog实现,这是一种使用硬件描述语言(HDL)来设计数字系统的工具。JPEG(Joint Photographic Experts Group)是一种广泛使用的有损图像压缩标准,而JPEG解码器则是将...

Global site tag (gtag.js) - Google Analytics