上篇博客我们做了一个bmp读取器,算是对文件协议有了深入一些的了解吧,那么了解之后如何更加灵活的利用这一协议呢?我们可以写第三个小程序,bmp文件的存储器
bmp读取器,是将bmp文件中的内容读取出来,按照一定的规则显示在屏幕上,而bmp存储器正好相反,我们需要把一张图片按照bmp文件协议的形式,写入计算机中,达到保存为bmp文件的目的。我们可以把这项工作分成两部分来做,首先,读取一张bmp文件,并将它存储,相当于“另存为”功能;然后,我们可以在JFrame上画一些图形,将这些图形保存为bmp文件,用电脑的画图板打开,实现自定义图片的存储。
我们先来实现第一部分
将一张读取进来的bmp文件另存为,听来很简单,但实际上还需要我们费些功夫。bmp读取时,我们只需要知道bmp文件中的有用信息,其他不需要的我们可以一概不读!但是在存储时,我们必须把每个字节都写进文件中才行。这就需要我们对bmp协议更加深入的了解,深入到知道每个字节都是干什么的。具体步骤如下:
(1)通过bmp读取器,读到所有有用的字节,做好准备
(2)写入一些“不必要”的字节,如:
0-1字节,读取文件时不需要读,但是写时必须要写
dos.write(0x42);
dos.write(0x4D);
2-5字节,为文件的大小,读取文件时不需要读,但写时必须要写(以后略),由于并无太大影响,可以直接写入0
dos.write(0);
dos.write(0);
dos.write(0);
dos.write(0);
。。。
如此,写下前53个字节,从第54个字节开始,按照从左到右,从下到上,BGR的顺序逐个写入(1)步骤中准备好的数据,即可做到bmp的“另存为”功能
第一部分还是很容易的,我们的挑战主要来自第二部分
如何在画板中画一些图形,并保存成bmp文件的格式呢?
我们自己画的图形,很难得到它的RGB值,而没有RGB值就无法存储bmp文件,怎么办呢?
经过大神的指点,我终于找到了解决办法,那就是Robot().createScreenCapture方法。这是一个截屏的方法,可以对屏幕某一坐标范围内的一定区域进行截屏。得到的文件存储成BufferedImage类的对象,即可解决最难得一步,具体代码如下:
BufferedImage image = new Robot().createScreenCapture(new Rectangle());//传入截屏的范围参数
for(int i=0;i<h;i++){//纵行
for(int j=0;j<w;j++){//横行
color [j][i] = image.getRGB(j, i);
}
}
for(int i=h-1;i>=0;i--){
for(int j=0;j<w;j++){
abc[0]=(byte)color[j][i];
color [j][i] = color[j][i]>>8;
abc[1]=(byte)color[j][i];
color [j][i] = color[j][i]>>8;
abc[2]=(byte)color[j][i];
color [j][i] = color[j][i]>>8;
dos.write(abc[0]);
dos.write(abc[1]);
dos.write(abc[2]);
}
}
如此便可完成最核心的部分了,其他的都很简单了,在此不作详述
经过一番周折,bmp存储器也做好了,接下来我们就可以给我们自制的画图板添加一项新的功能:"存储"。成功后,我们的画图板也将"与国际接轨了"。
经过这三篇博客,对这一星期的学习成果做一个总结,其实最终的认知只有一个:
有了协议,有了规则,我们可以破解任意的文件。
over~~
分享到:
相关推荐
本研究严格遵循DICOM 3.0标准,采用面向对象的方法,并借助中间文件的方式,设计并实现了一种通用图像/媒体文件(如BMP、TIFF、GIF、JPEG和AVI)格式与DICOM影像格式相互转换的软件。本软件具有结构模块化、灵活性和...
加载和保存压缩和未经压缩的2,16,256或16M颜色到BMP文件中 加载和保存未经压缩的黑/白WBMP(Wireless位图)图像 加载和保存压缩和未经压缩的2,16,256或16M颜色到PCX文件中 加载并储存为2,4,8,16,32,64,128...
6.1 BMP文件格式 6.2 GIF文件格式 6.3 JPEG格式 6.4 PNG格式 6.5 图像文件后缀一览表 练习与思考题 参考文献和站点 第7章 彩色数字电视基础 7.1 彩色电视制式 7.2 彩色电视信号的类型 7.3 ...
19. 图象文件格式:bmp、tif 和 jpg 是图象文件的格式。 20. 视频文件格式:AVI、RM 和 MPEG 是视频文件的格式。 21. 文件管理:在 Windows 操作系统中,改变文件和文件夹的显示方式应选查看菜单。 22. 杀毒软件...
这些数字信息可以存储在 JPEG 图形文件、GIF、BMP、TIFF 等常见的格式中,也可以存储在 PDF 电子文件格式中。同时,也可以将已转换的文本格式进行编码的转换方式,使其便于检索、复制、粘贴等使用。 第二,数字序列...
BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音捆绑文件(一种MIDI程序) C C0l:台风波形文件 ...
第三,解析基千 U 盘的 BMP 文件格式及存储规则, 实现 51 单片机对移动存储设备 U 盘内 BMP 格式图片有效数据的提取; 第四,根据对指定喷墨打印机指令集分析和研究,总结原始文档至点阵数据的变换算法; 最后,...
Matlab读取BMP文件代码使用结构化光源进行3D重建 免责声明该存储库收集在[1]的开发过程中开发的代码。 它没有维护,并且仅出于研究目的而设计。 当时的目标是专注于理论和新思想,因此,此代码并不像您期望的那样被...
2.图像文件扩展名有多种,例如 ·BMP、·JPG 等。 3.计算机上常用的 CD-ROM 驱动器是指光盘驱动器。 4.在 Windows 中,用鼠标选定多个不连续文件时,需同时按住 Ctrl 键。 5. PC 机的“Pentium”、“PentiumⅡ”指的...
文件中的西文有"全角"和"半角"之分 答案:C 10.以下哪种不是图像文件格式____。 A.BMP B.JPG C.GIF D.MPG 答案:D 11.所谓计算机"病毒"实质是()。 A.计算机供电不稳定造成的计算机工作不稳定 B.隐藏在计算机中的一段...
1. 静态图像文件格式有 GIF、BMP、PCX 等,但 MPG 是动态图像文件格式。 2. 代理服务器的作用包括充当局域网和外部网络的连接的出口、临时存储大量网上信息,加快网络访问、对局域网内的用户访问外网权限进行限制等...
N 支持不同格式的多媒体文件,包括支持幻灯片播放,图片显示(BMP、JPG、PNG),GIF 动画文件播放,Flash文件播放,Windows Media Player所支持的全部文件格式。 4) 工业报警 A 支持ISA18.2标准,可以单独设立报警...
5.3 与文件目录相关的命令操作 实例141 删除文件目录 实例142 重命名文件目录 5.4 文件、文件夹的复制和移动 实例143 批量移动文件 实例144 网络文件夹复制 实例145 文件复制过程中显示进度条 5.5 文件修改 ...
5.3 与文件目录相关的命令操作 实例141 删除文件目录 实例142 重命名文件目录 5.4 文件、文件夹的复制和移动 实例143 批量移动文件 实例144 网络文件夹复制 实例145 文件复制过程中显示进度条 5.5 文件修改 ...
8.2 BMP图像格式 318 8.3 TC环境下的256色显示 324 8.3.1 VGA的DAC色彩寄存器知识 324 8.3.2 置256色图形模式 324 8.3.3 访问显存 325 8.3.4 显示卡换页 326 8.3.5 硬件无关屏幕初始化 327 8.4...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...