`
luozhong915127
  • 浏览: 188809 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

仿真bmp格式

阅读更多

在进行文件保护的时候,格式bmp只能在java的软件中运行,不能再xp系统上运行。为此我们要解决这个问题,首先要知道bmp格式是什么形式保存的,它是以颜色数组保存的。为此就要解决这个问题,在此我犯了一个简单的错误,代码如下:

package saveFile1120;
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;


public class Save4Bit {
 // 用来保存每一个像素点颜色的数组 
   public  int[][] ArrayPic;
   private   Robot robot;
   public   void file() {  
         try {  
             robot = new Robot();
         } catch (Exception ef) {
             ef.printStackTrace();  
         }   
     } 
   public void Array2Pinc(Component pc){
     // 得到panel左上角的点相对于屏幕的坐标  
    ArrayPic = new int[pc.getPreferredSize().height][pc.getPreferredSize().width];
       Rectangle rect = new Rectangle(pc.getLocationOnScreen().x, pc.getLocationOnScreen().y,
         pc.getPreferredSize().width, pc.getPreferredSize().height);
        // 从屏幕上抓取一张图片  
       BufferedImage img = robot.createScreenCapture(rect);
       //System.out.println("ooo");
       // 获取图像上所有点的颜色,存入数组
         for (int i = 0; i < ArrayPic.length; i++) {  
             for (int j = 0; j < ArrayPic[i].length; j++) {
              //数组行列分别与画板的y坐标和x坐标对应
              ArrayPic[i][j] = img.getRGB(j, i);  
//                System.out.println(ArrayPic);
             }  
         }  
   }
}
我在下面调用robot,而没有在下面不能调用file();而file()没有返回值。在public void Array2Pinc(Component pc)也没有调用这个方法。要把void file()改成Save4bit的构造方法。才能使用,不然会出现这样的错误,代码如下:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

 

在其中就不要使用泛类队列了,在Save4bit定义了数组,可以获得画布的大小的数组,每一幅画都是有一些像素构成的。而这些像素就相当数组的一个元素,定义数组为int,就可以统一了基本类型。

 

bmp就是在已选定的区域,引用的是import java.awt.Rectangle;创建对象new  Rectangle。其关键作用的是定义的是import java.awt.Robot这个包。在引用import java.awt.Component这个包,它是所用的容器的父类,JPanel就可以使用它。

在遍历的时候应该注意height 和 width应该注意他的顺序,如果你把他搞反,除了一种情况,那就是在长宽一样大的时候。否则错误代码如下:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
	at sun.awt.image.IntegerInterleavedRaster.getDataElements(IntegerInterleavedRaster.java:202)
	at java.awt.image.BufferedImage.getRGB(BufferedImage.java:871)
	at saveFile1120.Save4Bit.Array2Pinc(Save4Bit.java:31)
	at saveFile1120.DrawListener.mouseReleased(DrawListener.java:45)
	at java.awt.Component.processMouseEvent(Component.java:6041)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5806)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4413)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
	at java.awt.Container.dispatchEventImpl(Container.java:2102)
	at java.awt.Window.dispatchEventImpl(Window.java:2440)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

 

 

 可视经过换肤色,换成xp系统的肤色代码如下:

public class DrawUI extends javax.swing.JFrame {
     ArrayList<NetJavaShape> shapes = new ArrayList<NetJavaShape>();
	 public static void main(String args[]) {
		DrawUI kl = new DrawUI();
		kl.initDrawUI();
		try {
	        UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
	        }
	     catch ( Exception e ) {
	    	 e.printStackTrace();
	     }
		//将界面设置为当前windows风格
	        kl.addWindowListener( new WindowAdapter(){
	           public void windowClosing(WindowEvent e) {
	        	   System.exit(0);
	           }
	       });
	  }

 

可以经行两幅图片比较,如下:

 

 

 

 

 

 

 

 

  • 大小: 17.2 KB
  • 大小: 37.6 KB
1
1
分享到:
评论

相关推荐

    bmp图片输入输出verilog仿真

    在本项目“bmp图片输入输出verilog仿真”中,我们将探讨如何使用Verilog来实现对.bmp图像文件的读取和显示,以及如何在ModelSim环境下进行仿真。 首先,了解.bmp图像文件格式至关重要。.bmp是位图图像文件格式,...

    NX1892图标48像素bmp格式

    这个名为"NX1892图标48像素bmp格式"的资源,显然是UG NX软件中的图标,以BMP(Bitmap)图像格式提供,尺寸为48像素乘以48像素。 BMP是一种位图文件格式,它存储的是未经压缩的像素数据,因此图像质量高,但文件大小...

    modelsim 仿真bmp图片 实现RGB - YCrC

    1. 编写读取.bmp文件的模块,解析其格式。 2. 设计颜色转换模块,根据RGB到YCrCb的公式进行计算。 3. 将读取的RGB值传递给颜色转换模块,得到YCrCb值。 4. 可选地,如果"img_gray"是目标输出,那么还需要一个模块来...

    bmp.rar_bmp图像读取_显示bmp

    BMP(Bitmap)是一种常见的位图图像格式,广泛用于操作系统、应用程序和游戏中的图形表示。本文将深入探讨如何在编程环境中读取和显示BMP图像,主要关注C++或相关的编程语言,因为这是最常见的处理图像数据的方式。 ...

    ModelSim仿真图像输入和输出仿真工程

    本教程将深入探讨如何在ModelSim环境中进行图像输入和输出的仿真工程,以bmp位图作为数据源,并最终将仿真结果转换回相同格式的位图。 首先,我们需要理解图像数据的表示。BMP(Bitmap)是一种常见的位图文件格式,...

    中值滤波图像处理verilog实现和matlab仿真验证

    本项目聚焦于“中值滤波图像处理”的Verilog硬件描述语言实现以及MATLAB软件仿真验证,旨在通过这两种不同的方法来验证算法的正确性和效率。 首先,我们来看Verilog编程实现。Verilog是一种用于数字电路设计的硬件...

    FPGA图像处理仿真平台搭建

    1. **图像输入**:平台需要能够读取图像文件,例如常见的BMP格式。BMP是一种无损的位图格式,包含图像的每个像素的颜色信息。我们需要设计电路来解析BMP文件的头信息,并将像素数据加载到FPGA内部的数据存储器中。 ...

    noise_0715_NOISE_噪声仿真_噪声_

    5. 图像处理的基本概念,如位图图像(.bmp格式)和信号的傅立叶变换。 掌握这些知识点对于理解和处理实际中的噪声问题至关重要,无论是为了提高图像传感器的性能,优化通信系统的抗干扰能力,还是提升图像处理算法...

    数字全息仿真实验_MATLAB全息_数字全息_matlab_全息再现_全息仿真_

    这个技术结合了光学、计算机科学以及图像处理,而MATLAB作为一种强大的数值计算和图形处理环境,是实现数字全息仿真的理想工具。在这个实验中,我们将探讨以下几个关键知识点: 1. **数字全息实验原理**:数字全息...

    微观交通仿真软件VISSIM使用介绍

    这涉及到导入BMP格式的底图、按比例缩放、调整图片位置以及利用软件工具创建和编辑路网结构。 总之,VISSIM作为一个强大的交通仿真工具,通过精细的模型和丰富的功能,能够对复杂的交通问题进行深入研究,为交通...

    BMP生成PCB格式软件

    标题中的“BMP生成PCB格式软件”指的是一个能够将位图图像(BMP格式)转换为用于印刷电路板(PCB)设计的软件工具。在电子设计自动化领域,这样的功能通常是为了将公司logo、警示图标或其他图形元素导入到PCB布局中...

    基于stm32单片机BMP180气压计海拔高度温度测量Proteus仿真(源码+仿真+全套资料).zip

    3. **BMP180传感器应用**:熟悉BMP180的datasheet,了解其工作原理、数据格式、命令集和校准步骤。正确配置传感器的工作模式,获取压力和温度原始数据。 4. **气压与海拔高度转换**:学习大气压强与海拔高度的关系...

    卫星轨道仿真_卫星轨道仿真_

    图像文件如`World-Night.bmp`, `World-Winter.bmp`, `big.bmp`, `World-Standard-HiRes.bmp`, `biga.jpg`可能用来展示地球的不同视图,比如昼夜分布、季节变化或高分辨率地图,这些在可视化卫星轨道时非常有用。...

    基于STM32CubeMX+STM32F103C6Tx+BMP280的温度压力采集Proteus仿真设计

    BMP280的数据手册提供了I2C通信协议的详细信息,包括寄存器地址和数据格式。在Keil中,我们可以使用HAL库中的I2C函数读写传感器的寄存器,获取温度和气压数据。这通常涉及到初始化I2C外设,发送开始条件,写入地址,...

    信号处理Matlab仿真

    Matlab支持多种文件格式,如.wav音频文件、.bmp图像文件等。 接下来,我们深入到信号的分析部分。傅立叶变换是信号处理中的核心工具,它将时域信号转换到频域,揭示信号的频率成分。Matlab提供了fft函数来实现快速...

    lcd显示仿真 程序

    12. **文件格式支持**:程序可能支持多种图像格式导入,如BMP、PNG、JPEG等,以便在LCD上显示图片。 通过LCD显示仿真程序,开发者可以有效地减少硬件开发中的迭代次数,提高工作效率,同时为初学者提供了一个安全的...

    交通控制软件仿真流程PPT学习教案.pptx

    - 使用`Options→Background→Open`导入BMP格式的地图文件。 - 使用`Options→Background→Scale`按照比例缩放地图。 - 使用`Options→Background→Orgin`手动拖拉调整背景图的位置。 - 通过`Options→...

    C语言源码仿真实例19 12864显示图片仿真 程序(程序 仿真).rar

    4. **图片格式处理**:可能涉及将常见的图片格式(如BMP、JPEG或PNG)转换为适合12864 LCD显示的格式。 5. **内存管理**:在资源有限的嵌入式系统中,如何有效地存储和加载图片数据。 6. **仿真技术**:如何使用...

    Vissim仿真流程.ppt

    使用`Options-&gt;Background-&gt;Open`导入BMP格式的图像,然后通过`Options-&gt;Background-&gt;Scale`进行比例缩放,`Options-&gt;Background-&gt;Orgin`进行位置调整。保存图片信息参数(*.hgr文件)以备后用。 - **建立路网**:...

    Vissim仿真流程全解PPT学习教案.pptx

    具体来说,可以使用Options菜单下的Background子菜单导入BMP格式的平面设计图,并通过Scale和Origin选项进行比例缩放和位置调整。为避免重复工作,用户可以保存图片信息参数为.hgr文件。 接着,Vissim中的路网由...

Global site tag (gtag.js) - Google Analytics