`
孙瑞鸿
  • 浏览: 17883 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

保存bmp自画图形

 
阅读更多
保存自画图形(bmp图像)
分析:
首先:要做一个画板出来,实现画各种图形(这个就很简单,不多说了)
其次:怎样将这个图片保存起来,保存的目的就是再一次打开,这就要求我们在保存
的时候要有一定的规则!bmp的规则我们已经很熟悉了!接下来就看一下具体操作吧!

此次我们使用的是BufferedImage得到画布,利用BufferedImage的一些方法截取
指定大小的图片、取得图片上的图片信息,并将其写入指定路径的文件中。

java.awt.Robot ro=new java.awt.Robot();	
	/*
	* myCanvas.getLocation().x,myCanvas.getLocation().y
	* 得到当前容器的x,y坐标值
	*/
	Rectangle rt=new Rectangle(db.getLocation().x+10,db.getLocation().y+70,db.getWidth()-20,db.getHeight()-80);
	BufferedImage im=  ro.createScreenCapture(rt);
	

1.文件头信息
int bheadlen=14;
	//创建一个byte数组保存文件头信息
	byte[] bhead=new byte[bheadlen];
	bhead[0]='B';
	bhead[1]='M';
	//文件大小
	filesize=im.getWidth()*im.getHeight()*3;
	for(int i=2,j=0;i<6;i++,j++){
		byte[] by=change(filesize);
		bhead[i]=by[j];
	}
	//偏移量
	bfOffBits=54;
	for(int i=10,j=0;i<14;i++,j++){
		byte[] by=change(bfOffBits);
		bhead[i]=by[j];
	}
		dos.write(bhead);

2.位图信息
//保存位图信息的数组
	byte[] bmess=new byte[40];
	width=im.getWidth();
	high=im.getHeight();
	//本结构所占用字节数
	sss=40;
	for(int i=0,j=0;i<4;i++,j++){
		byte[] by=change(sss);
		bmess[i]=by[j];
	}
	for(int i=4,j=0;i<8;i++,j++){
		byte[] by=change(width);
		bmess[i]=by[j];
		}
	for(int i=8,j=0;i<12;i++,j++){
		byte[] by=change(high);
		bmess[i]=by[j];
	}
	//目标设备的级别,必须为1
	plane=1;
	bmess[12]=(byte) ((plane>>>0)&0xff);
	bmess[13]=(byte)((plane>>>8)&0xff);
	//每个像素所需的位数(此处为24真彩色)
	weishu=24;
	bmess[14]=(byte) ((weishu>>>0)&0xff);
	bmess[15]=(byte)((weishu>>>8)&0xff);
	//位图的大小
	weitusize=filesize-54;
	for(int i=20,j=0;i<24;i++,j++){
		byte[] by=change(weitusize);
		bmess[i]=by[j];
	}
	dos.write(bmess);

3.位图数据
//用于补0的数组
	byte d[]=new byte[rt.width%4];
	//写入位图数据
	for(int i=rt.height-1;i>=0;i--){					   
		for(int j=0;j<rt.width;j++){
			int rgb=im.getRGB(j, i);
			b[0]=(byte)rgb;
			rgb=rgb>>8;
			b[1]=(byte)rgb;
			rgb=rgb>>8;
			b[2]=(byte)rgb;
			dos.write(b); 
			if(rt.width%4!=0){
				dos.write(d);
			}
		}  
	}

这样呢就将自己画的图像保存到文件中去了!而且可以用自己写的bmp图形解析器打开哦!
赶快去试试吧
分享到:
评论

相关推荐

    自制画板打开和保存BMP格式文件

    总的来说,自制画板打开和保存BMP格式文件涉及到的知识点包括:BMP文件格式的理解与解析,二进制文件操作,图像处理基础,GUI编程,以及事件驱动编程。这个项目既能够加深对图像文件格式的理解,也能锻炼实际编程...

    win32画图程序 可保存bmp 截图

    例如,`CreateCompatibleDC()`创建兼容设备上下文,`SelectObject()`选择图形对象(如画笔、刷子、位图等),`BitBlt()`或`StretchBlt()`用于图像的复制或拉伸,`SetROP2()`设置绘图模式(如画线、填充等)。...

    BMP图像动画效果

    在IT领域,多媒体技术是不可或缺的一部分,而BMP图像作为一种常见的位图格式,广泛应用于各种图形处理和动画制作。本项目“BMP图像动画效果”就是利用编程技巧来实现动态的BMP图像展示,通过多线程和双重缓冲区技术...

    一个将图片填入画簿后的范例但是不知道怎样保存BMP

    在VBA(Visual Basic for Applications)编程环境中,创建和保存BMP图像文件涉及到对图形界面和文件处理的深入理解。这个范例可能是通过VBA在Excel工作簿中绘制图像,但缺少了保存为BMP格式的功能。让我们详细讨论...

    实现自绘图形输出为bmp图片文件

    4. **创建和保存BMP文件**:在Windows程序中,要将自绘图形保存为BMP文件,首先需要创建一个内存DC,然后在该DC上执行绘制操作。接下来,需要创建一个BMP文件头结构,填充必要的图像信息。最后,将内存DC中的像素...

    MFC截取窗体图片并保存BMP

    通过调试和运行此代码,你可以直观地看到截取并保存BMP文件的过程。 总之,MFC提供了强大的图形功能,使得在C++环境中截取和保存窗体图像变得简单。通过理解MFC的窗口和设备上下文机制,以及如何操作BMP文件,...

    MFC画图板,可以画一些基本图形,如直线,椭圆,扇形,矩形,弦形,三角形。 可以保存为BMP的文件。

    在这个特定的项目中,"MFC画图板"是一个基于MFC的程序,允许用户在界面上绘制各种基本图形,包括直线、椭圆、扇形、矩形、弦形和三角形,并且能够将这些图形保存为BMP格式的图像文件。 1. **MFC框架**: MFC框架...

    动画 GIF 制作软件,制作动画只需五个步骤。你可以使用 BMP、GIF、JPG、ICO、PNG 文件作为动画帧。完成后可保存为 GIF 或 AVI 文件。

    PNG(Portable Network Graphics)是一种无损压缩的图片格式,支持透明度,常用于网页设计和图形编辑。 描述中提到,完成的动画可以保存为 GIF 或 AVI 文件。GIF 文件适合在网络上传输,因为它体积小且支持动画,但...

    截屏并保存为bmp c++

    在IT领域,特别是编程与图形处理方面,"截屏并保存为bmp c++"这一主题涉及到了使用C++语言进行屏幕捕获,并将捕获到的图像以位图(.bmp)格式保存的重要技术点。下面,我们将深入探讨这一主题所包含的关键知识点。 ...

    画板BMP格式保存和打开总结

    标题中的“画板BMP格式保存和打开总结”是指在编程中处理图像文件时,针对BMP(Bitmap)格式的图像进行保存和读取的操作。BMP是一种无损的位图格式,通常用于Windows操作系统中,它直接存储像素数据,没有经过任何...

    缩放BMP并保存为文件

    在本文中,我们将深入探讨如何在VC2010开发环境下对BMP图像进行缩放并将其保存为新的文件。这个过程涉及到图像处理的基本概念,包括位图操作、图像缩放算法以及文件I/O操作。以下是一些关键知识点: 1. **BMP格式**...

    勾月画图程序(VB6.0源代码编写)可以打开一个*.bmp文件,也可以保存为另一个*.bmp文件,可以画出不同颜色和线条.

    【标题】: "勾月画图程序" 是一个基于VB6.0开发的图形编辑工具,它具备基本的图像处理功能,如打开、保存BMP位图文件,并且支持绘制不同颜色和线条。 【核心知识点】 1. **VB6.0编程**:Visual Basic 6.0是微软...

    MFC图形在文档中的保存

    保存图形时,可以选择不同的文件格式,如.BMP、.PNG、.JPEG等。对于自定义的图形数据,可能需要选择一个能容纳复杂数据结构的格式,如XML,以便于解析和恢复。 7. **性能优化**: 对于大量图形的保存和加载,可能...

    简单的图形画板

    6. **保存与导出**:用户可以将他们的作品保存为特定格式(如BMP、JPEG、PNG等),或者导出为其他可编辑的图像文件格式,以便于进一步处理。 7. **交互式界面**:界面设计应该直观易用,具有类似PS的多面板布局,如...

    打开BMP图形文件,并且显示,还可放大

    1. **BMP文件格式**:BMP是Windows操作系统下的一个标准图像文件格式,它保存了图像的像素信息,包括颜色深度、宽度、高度和实际的像素数据。BMP文件不进行任何形式的压缩,因此其文件大小通常较大。 2. **打开BMP...

    用MFC画图并保存在指定磁盘格式BMP

    5. **定义SaveBitmapFile函数**:这个函数使用Windows API来保存BMP文件: ```cpp void SaveBitmapFile(CDC& dc, CString filePath) { BITMAPINFO bmi = {0}; bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); ...

    双缓冲画图并保存为bmp

    接下来,我们需要将画好的位图保存为BMP文件。可以使用`CImage`类来简化这个过程。`CImage`类提供了方便的方法来加载、保存和处理图像,包括BMP格式。以下是一个简单的保存为BMP的例子: ```cpp // 获取当前视口的...

    利用java实现画图板和保存读取BMP格式的图片(一)

    在本篇博文中,我们将探讨如何使用Java编程语言来实现一个简单的画图板应用程序,并学习如何保存和读取BMP(Bitmap)格式的图片。BMP是一种无损图像格式,通常用于存储像素数据,便于程序处理。以下是实现这一功能所...

    MFC画图板绘图并保存图片导出

    4. **GDI图形设备接口**:MFC 使用Windows的GDI(Graphics Device Interface)来进行绘图,它提供了各种绘图工具,如画笔(CPen)、画刷(CBrush)、字体(CFont)等。在`OnDraw`函数中,我们将使用这些GDI对象进行...

    图形文件格式解析gif,jpeg,bmp,ico

    本篇文章将深入解析四种常见的图形文件格式:GIF、JPEG、BMP和ICO,帮助你理解它们的特点、用途及内部工作原理。 1. GIF(Graphics Interchange Format): GIF是一种无损压缩格式,支持动画和透明度。它采用LZW...

Global site tag (gtag.js) - Google Analytics