保存自画图形(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文件格式的理解与解析,二进制文件操作,图像处理基础,GUI编程,以及事件驱动编程。这个项目既能够加深对图像文件格式的理解,也能锻炼实际编程...
例如,`CreateCompatibleDC()`创建兼容设备上下文,`SelectObject()`选择图形对象(如画笔、刷子、位图等),`BitBlt()`或`StretchBlt()`用于图像的复制或拉伸,`SetROP2()`设置绘图模式(如画线、填充等)。...
在IT领域,多媒体技术是不可或缺的一部分,而BMP图像作为一种常见的位图格式,广泛应用于各种图形处理和动画制作。本项目“BMP图像动画效果”就是利用编程技巧来实现动态的BMP图像展示,通过多线程和双重缓冲区技术...
在VBA(Visual Basic for Applications)编程环境中,创建和保存BMP图像文件涉及到对图形界面和文件处理的深入理解。这个范例可能是通过VBA在Excel工作簿中绘制图像,但缺少了保存为BMP格式的功能。让我们详细讨论...
4. **创建和保存BMP文件**:在Windows程序中,要将自绘图形保存为BMP文件,首先需要创建一个内存DC,然后在该DC上执行绘制操作。接下来,需要创建一个BMP文件头结构,填充必要的图像信息。最后,将内存DC中的像素...
通过调试和运行此代码,你可以直观地看到截取并保存BMP文件的过程。 总之,MFC提供了强大的图形功能,使得在C++环境中截取和保存窗体图像变得简单。通过理解MFC的窗口和设备上下文机制,以及如何操作BMP文件,...
在这个特定的项目中,"MFC画图板"是一个基于MFC的程序,允许用户在界面上绘制各种基本图形,包括直线、椭圆、扇形、矩形、弦形和三角形,并且能够将这些图形保存为BMP格式的图像文件。 1. **MFC框架**: MFC框架...
PNG(Portable Network Graphics)是一种无损压缩的图片格式,支持透明度,常用于网页设计和图形编辑。 描述中提到,完成的动画可以保存为 GIF 或 AVI 文件。GIF 文件适合在网络上传输,因为它体积小且支持动画,但...
在IT领域,特别是编程与图形处理方面,"截屏并保存为bmp c++"这一主题涉及到了使用C++语言进行屏幕捕获,并将捕获到的图像以位图(.bmp)格式保存的重要技术点。下面,我们将深入探讨这一主题所包含的关键知识点。 ...
标题中的“画板BMP格式保存和打开总结”是指在编程中处理图像文件时,针对BMP(Bitmap)格式的图像进行保存和读取的操作。BMP是一种无损的位图格式,通常用于Windows操作系统中,它直接存储像素数据,没有经过任何...
在本文中,我们将深入探讨如何在VC2010开发环境下对BMP图像进行缩放并将其保存为新的文件。这个过程涉及到图像处理的基本概念,包括位图操作、图像缩放算法以及文件I/O操作。以下是一些关键知识点: 1. **BMP格式**...
【标题】: "勾月画图程序" 是一个基于VB6.0开发的图形编辑工具,它具备基本的图像处理功能,如打开、保存BMP位图文件,并且支持绘制不同颜色和线条。 【核心知识点】 1. **VB6.0编程**:Visual Basic 6.0是微软...
保存图形时,可以选择不同的文件格式,如.BMP、.PNG、.JPEG等。对于自定义的图形数据,可能需要选择一个能容纳复杂数据结构的格式,如XML,以便于解析和恢复。 7. **性能优化**: 对于大量图形的保存和加载,可能...
6. **保存与导出**:用户可以将他们的作品保存为特定格式(如BMP、JPEG、PNG等),或者导出为其他可编辑的图像文件格式,以便于进一步处理。 7. **交互式界面**:界面设计应该直观易用,具有类似PS的多面板布局,如...
1. **BMP文件格式**:BMP是Windows操作系统下的一个标准图像文件格式,它保存了图像的像素信息,包括颜色深度、宽度、高度和实际的像素数据。BMP文件不进行任何形式的压缩,因此其文件大小通常较大。 2. **打开BMP...
5. **定义SaveBitmapFile函数**:这个函数使用Windows API来保存BMP文件: ```cpp void SaveBitmapFile(CDC& dc, CString filePath) { BITMAPINFO bmi = {0}; bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); ...
接下来,我们需要将画好的位图保存为BMP文件。可以使用`CImage`类来简化这个过程。`CImage`类提供了方便的方法来加载、保存和处理图像,包括BMP格式。以下是一个简单的保存为BMP的例子: ```cpp // 获取当前视口的...
在本篇博文中,我们将探讨如何使用Java编程语言来实现一个简单的画图板应用程序,并学习如何保存和读取BMP(Bitmap)格式的图片。BMP是一种无损图像格式,通常用于存储像素数据,便于程序处理。以下是实现这一功能所...
4. **GDI图形设备接口**:MFC 使用Windows的GDI(Graphics Device Interface)来进行绘图,它提供了各种绘图工具,如画笔(CPen)、画刷(CBrush)、字体(CFont)等。在`OnDraw`函数中,我们将使用这些GDI对象进行...
本篇文章将深入解析四种常见的图形文件格式:GIF、JPEG、BMP和ICO,帮助你理解它们的特点、用途及内部工作原理。 1. GIF(Graphics Interchange Format): GIF是一种无损压缩格式,支持动画和透明度。它采用LZW...