保存自画图形(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图形解析器打开哦!
赶快去试试吧
分享到:
相关推荐
MFC画图板,可以画一些基本图形,如直线,椭圆,扇形,矩形,弦形,三角形。 可以保存为BMP的文件。
双缓冲画图,并将所画图形保存为bmp格式文件。开发环境vs2008
将窗体作为位图复制到剪贴板并保存为文件 平滑改变JPEG图像大小 改变位图颜色通道 改变图形模式 改变鼠标指针 旋转文本 无闪烁动画 比较两个图标是否相同 淡入、淡出图像 清空TImage 直接在桌面上画图 绘图 翻转位图...
VB6.0画线段、画圆形、填充图形画图实例,当鼠标按下时,对于选择不同的工具执行不同的操作,在标签中显示当前鼠标在画板中的位置,通过point方法拾取颜色,并设定为前景色,可画线条、线段、设置画笔精细、画圆形、...
1.9.1 BMP格式 1.9.2 PSD/PDD格式 1.9.3 JPEG格式 1.9.4 TIFF格式 1.9.5 TGA格式 1.9.6 PCX格式 1.9.7 GIF格式 1.9.8 PICT格式 1.9.9 其他图像文件格式 1.10 计算机图像处理系统 1.10.1 显示器及相关概念 1.10.2 ...
对象删除:支持用户选择一个多边形(与你的多边形保存的数据结构有关)并删除。 对象存储:设计一种数据结构存储每个多边形的顶点与边,支持文件存盘,同时程序可以打开文件以显示多边形。 1. 支持用户选择多边形的...
(7)文件保存格式为BMP格式; (8)文字功能:读取文本框中的文本并打印到屏幕鼠标的相应的响应位置,传入输入的文字大小的参数,以此来改变文字的大小; 4.弹泡泡功能的设计 根据Java多线程来实现弹泡泡功能;泡泡的...
This ASP component draw image on web server. Supports JPG, BMP files and can export to JPG,BMP. iImgDraw 3.0 是一个Asp下的图形绘制组件。 是一个由[数据驿站]开发,版权...9、可将图形保存到文件中(BMP,JPG)
1、画直线:通过OnLine()函数实现。 2、画矩形:通过OnRectangle()函数实现。 3、画椭圆:通过...9、保存为bmp位图:可以将在程序所画的图形保存为一幅bmp图片,通过view中的SaveAsBmp(CString filename)实现。
MXSF素描画软件是一款让你能在电脑上绘制素描画的软件,你...3、新建工程的时候要选一张bmp图片作为参照画 4、可以从右侧颜色表添加需要的颜色,在列表里右键添加 5、右键可以选择各种画板工具 MXSF素描画软件截图
大家好,今天向大家介绍一款漫画制作软件——EasyComic,即使您是一位...1. 将漫画文件导出为图片时,在PNG的基础上,增加JPG和BMP两种格式。 2. 修复BUG:对分组(Group)进行编辑,然后保存,分组的位置出现偏移。
界面设计采用Qt开发工具,而绘图...总体来看,需要实现的系统的主要功能为通过交互,绘制图形,并保存为.bmp 格式的文件。而无论是哪种绘图算法,本质上来说,都是在决定哪些位置的像素点应该被置为当前画笔的颜色。
cmorph21.zip create morphed images with TGA/IMG/BMP/GIF/IPI/PCX files(630KB)<END><br>43,bmp2ico.zip 转换BMP文件到WINDOWS 3.X的ICO文件(22KB)<END><br>44,alch151.zip 图形转换器(359KB)<END><br>45...
可以打开或保存多种格式的图象文件(如bmp、jpg、gif、png等),并对此进行缩放、裁剪、转换等操作。 立几画板 v6.0.5.2 更新日志 增加了“添加文本”命令,可以象Word中一样直接输入文本。 默认文本颜色改为黄色...
无论是漫画文件、漫画包,还是普通的图形元素,都可以被导出为图片,支持PNG、JPG、BMP等格式。在未来的版本中,我们还会支持SVG格式。漫画包(*.ecp)的机制,可以帮助您集中管理一系列的漫画文件(*.ecf),就像...
这是一款基于excel2019的LED/LCD字符、图形点阵提取工具,点阵大小...6、可将设计好的点阵数据复制到Sheet2中,逆向画出对应的图像; 7、特别提醒:该工具需要使用excel的宏,使用前务必允许启用宏,否则无法正常使用。
1/打开程序 ...6/你一定不只是要build我给出的front图片吧,打开画图板自己画几个灰度图作为front吧,记住保存成bmp格式哦,然后build看看,如果有漂亮的结果不妨贴到这里来给大家看看啦。 样例:
(包括示例程序)(26KB) 4,crystal.zip 一个图形创建和处理控件, 它支持bmp, cur, dib, emf, gif, ico, jpg和wmf文件格式, 能装入, 存储, 画, 处理和打印图形. 有多种处理效果. (free) cool(48KB) 5,gvocx....
3.0 画笔粗细更换为VB的另外组件,增加画图保存功能(BMP格式) 4.0 由原来的画点改为画线,正式成为画图软件 修正载入图片功能。增加简单话画圆功能。 增加了美化窗体模块(转)
一旦弄清楚如何读取标头并处理实际位,我发现使用BitArray来保存图像更容易。 这使用了8倍的内存,但允许每个像素以布尔数组寻址。 它为您完成了一些工作。 然后,我绕过了图形库,只是直接设置像素。 为了支持2帧...