`

图象缓冲

阅读更多
图象缓冲的应用双缓冲绘图:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1  ///////////////////////////////////////////////////////////////////////////////
 2  // 
 3  // @title:BufImgJpane
 4  // 
 5  // @discription 实现了双缓冲画图
 6  // 
 7  // @author 爪洼河
 8  // 
 9  // @date 2006-8
10  //
11  ////////////////////////////////////////////////////////////////////////////////////
12 import java.awt.Graphics;
13 import java.awt.Graphics2D;
14 import java.awt.Image;
15 import java.awt.image.BufferedImage;
16 import javax.swing.ImageIcon;
17 import javax.swing.JButton;
18 import javax.swing.JFrame;
19 import javax.swing.JPanel;
20 public class BufImgJpane extends JPanel
21 {
22     Image img ;
23     BufferedImage bufimg ;
24     public BufImgJpane ()
25     {
26         ImageIcon icon = new ImageIcon (getClass ().getResource ("1.jpg")) ;
27         img = icon.getImage () ;
28         bufimg = new BufferedImage (img.getWidth (this) , img.getHeight (this) ,
29                 BufferedImage.TYPE_3BYTE_BGR) ;
30         Graphics2D g2 = bufimg.createGraphics () ;
31         g2.clearRect (0 , 0 , img.getWidth (this) , img.getHeight (this)) ;
32         g2.drawImage (img , 0 , 0 , img.getWidth (this) , img.getHeight (this) ,
33                 this) ;
34     }
35     public void paintComponent (Graphics g)
36     {
37 
38         g.drawImage (bufimg , 0 , 0 , this.getWidth () , this.getHeight () ,
39                 this) ;
40     }
41     public static void main (String args[])
42     {
43         BufImgJpane bufimgpane = new BufImgJpane () ;
44         JFrame frame = new JFrame ("双缓冲画图") ;
45         frame.add (bufimgpane) ;
46         frame.setSize (610 , 625) ;
47         frame.setVisible (true) ;
48         frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) ;
49     }
50 }
51 

图象缓冲的应用截图:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 ///////////////////////////////////////////////////
 2 //
 3 //  @name TestImageIO.java
 4 //
 5 //  @discription 首先测试把一个容器通过按钮事件存为一张图片。
 6 //
 7 //  @author java&he
 8 //
 9 //  @date 2006-12
10 //
11 ////////////////////////////////////////////////////
12 import java.awt.Graphics;
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
15 import java.awt.image.BufferedImage;
16 import java.io.File;
17 import javax.imageio.ImageIO;
18 import javax.swing.*;
19 public class TestImageIO
20 {
21     JFrame frame = new JFrame ("测试截屏");
22     JPanel panel = new JPanel ();
23     public TestImageIO ()
24     {
25         
26         frame.setSize (200,300);
27         
28         frame.add ("Center",panel);
29         panel.setLayout (null);
30         JButton btn = new JButton ("paint");
31         btn.setBounds (100,100,100,50);
32         panel.add (btn);
33         btn.addActionListener (new ActionListener ()
34         {
35             public void actionPerformed (ActionEvent evt)
36             {
37                 BufferedImage bufimg = new BufferedImage (TestImageIO.this.frame.getBounds ().width,TestImageIO.this.frame.getBounds ().height,BufferedImage.TYPE_INT_RGB);
38                 Graphics g = bufimg.getGraphics ();
39                 TestImageIO.this.frame.paint (g);
40                 g.dispose ();
41                 try
42                 {
43                     ImageIO.write (bufimg,"jpg",new File ("Test.jpg"));
44                     
45                 }
46                 catch(Exception e)
47                 {
48                     e.printStackTrace ();
49                 }
50             }
51         });
52         frame.setVisible (true);
53         frame.setDefaultCloseOperation (frame.EXIT_ON_CLOSE);
54     }
55     public static void main (String[] args)
56     {
57         new TestImageIO ();
58     }
59     
60 }
61 


分享到:
评论

相关推荐

    循环图像缓冲区.zip

    循环图像缓冲区是一种在计算机图形学和游戏开发中常见的技术,用于提高图像处理效率和流畅度。这种技术基于双缓冲或多缓冲的概念,特别是在实时渲染环境中,例如游戏引擎、动画软件和用户界面。下面我们将深入探讨...

    循环图像缓冲区(1).zip

    循环图像缓冲区是一种在计算机图形学和多媒体编程中常见的技术,用于高效地处理连续显示的图像数据,如视频播放或游戏画面。这种技术的核心在于利用内存管理策略来优化图像数据的读取和写入过程,以减少延迟并提高...

    行业资料-电子功用-利用图像缓冲器的电子变焦系统的介绍分析.rar

    本篇将重点介绍利用图像缓冲器的电子变焦系统,从其基本原理、工作流程到实际应用,深入剖析这一技术。 首先,我们要理解电子变焦与光学变焦的区别。光学变焦是通过移动镜头内部的镜片组来改变焦距,从而改变视角,...

    234循环图像缓冲区_new.pdf

    234循环图像缓冲区_new.pdf

    108循环图像缓冲区_new.pdf

    108循环图像缓冲区_new.pdf

    举例解析Java的图像缓冲技术的使用

    Java的图像缓冲技术主要用于优化图像显示,特别是在处理大量或者复杂图像数据时,它可以显著提高程序的性能和用户体验。在Java中,图像缓冲涉及到的主要类来自`java.awt.image`包,如`BufferedImage`和`Image`。下面...

    多媒体应用中基于PCM的图像缓冲区的生命周期增强技术

    在探讨多媒体应用中基于PCM(相变存储器)的图像缓冲区生命周期增强技术之前,先来了解一些基础和相关概念。 相变存储器(PCM)是一种非易失性存储器,它基于相变材料通过电加热从一种物理状态转变为另一种物理状态...

    图像处理算法的介绍与思路包括图像平移、图像颠倒、图像镜像变换、图像旋转

    4. **显示新图像**:把交换后的图像缓冲区内容重新显示在屏幕上。 #### 三、图像镜像变换 **定义**:图像镜像是指将图像左右翻转显示在屏幕的技术。 **实现原理**:每行图像信息的处理方式相同,且行顺序不发生...

    C# 双缓冲控件

    双缓冲的核心概念是使用两个图像缓冲区(通常称为帧缓冲区)来处理图形渲染。 在传统的单缓冲机制中,每当图形更新时,都会直接绘制到屏幕上。如果多个图形操作同时发生,屏幕可能会出现闪烁或者部分未完成的图像,...

    image-tag:处理通过图像缓冲区的图像(抱歉,由于底层操作的限制,此时没有流),检测图像上的人脸,添加感知哈希和phashBinary(可用于图像相似性匹配)

    图片标签 输出图像上存在的感知哈希和面部对象; 需要安装phash,cimg,...接受图像缓冲区并输出带标签的图像: var ImageTag = require ( 'image-tag' ) ; var imageTag = new ImageTag ( { tmpDir : '/pat

    图像处理中的基础函数:图像旋转C代码

    5. **更新图像**:将旋转后的新像素数据写回到图像,或者返回一个新的图像缓冲区。 6. **优化**:为了提高效率,可以使用预计算旋转矩阵的技巧,或者使用向量化的SIMD(单指令多数据)指令。 在"turnImage.c"文件...

    双缓冲应用

    双缓冲的基本原理是创建两个图像缓冲区,通常称为前台缓冲和后台缓冲。当绘制新的图像时,所有图形操作都在后台缓冲区进行,避免了在用户界面上看到部分完成的或闪烁的图像。一旦后台缓冲区完成绘制,整个图像会被一...

    Java双缓冲技术原理详细讲解例子

    1. 创建一个离屏缓冲区(Off-Screen Buffer),这是一个与屏幕大小相同的图像缓冲区。 2. 在离屏缓冲区上执行所有的绘图操作,如绘制组件、线条、文本等。在这个阶段,即使绘图过程复杂,用户也看不到任何变化,因为...

    FPGA数字图像采集与处理-2

    在“11-18”这个特定的工程中,可能涵盖了从图像采集到处理的一系列模块,如ADC(模拟到数字转换器)接口、DMA(直接存储器访问)控制器、图像缓冲区管理以及特定的图像处理算法实现。 1. 图像采集:在FPGA中,图像...

    OV5640+双缓冲+成像ok+内存管理+格式ok+初步二值化ok+图像腐蚀ok

    双缓冲工作方式是指系统中有两个图像缓冲区,当一个缓冲区在被显示时,另一个缓冲区可以进行数据写入。这样,当一个帧完成渲染后,可以立即切换到下一个缓冲区,确保连续且无中断的图像输出。 "成像ok"意味着OV5640...

    VC++将彩色图像转换成黑白图像源代码

    3. **遍历像素**:对于图像中的每一个像素,取出其RGB值,用上述加权平均公式计算出灰度值,并将结果存入灰度图像缓冲区。 4. **保存灰度图像**:使用位图保存函数,如`Save`,将灰度图像数据写入新的文件。 在...

    开发用的图标缓冲系列

    在计算机图形学中,图像缓冲是一种将图像数据存储在内存中的技术,这样可以提高渲染效率并避免屏幕闪烁。当改变图像时,先在缓冲区中完成修改,然后再一次性显示到屏幕上,这个过程称为双缓冲或多缓冲技术,能有效...

    基于DH_CG300图像采集卡的图像采集平台的开发

    在这个例子中,首先需要设置图像采集卡的相关参数,然后采集图像数据并将其存储在图像缓冲区。接着,利用图像处理算法对缓冲区中的图像数据进行反色处理。最后,将处理后的图像显示出来。 #### 五、总结 基于DH_...

    显示YUV图像的代码

    3. 创建RGB图像缓冲区:根据转换后的RGB数据,创建一个适合屏幕显示的RGB图像缓冲区。 4. 显示图像:将RGB缓冲区传递给图形库或操作系统,进行渲染和显示。 在Python中,可以使用OpenCV或PIL等库来实现这个过程。...

Global site tag (gtag.js) - Google Analytics