- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
arm课程设计报告2
arm课程设计报告
题目 :c 语言实现 bmp 图像显示
学 号: 090615331 姓 名:苗水清 指导老师:姚红革 实验地点:教 4A203
计算机科学与技术系 2012年 12月 21日
一 . 设计目的
(1)熟悉一个程序编辑软件的应用,例如 Eclipse 、 Visual C/c++
(2) 能够通过此次的课程设计过程你学习如何分析问题和解决问题的能力
(3)用程序实现在提供的画布上显示 BMP 文件
二.基本思路
BMP是一种与硬件设备无关的图像文件格式, 使用非常广。 它采用位映射存储格式, 除了 图像深度可选以外, 不采用其他任何压缩,因此, BMP 文件所占用的空间很大。 BMP 文件 的图像深度可选 lbit 、 4bit 、 8bit 及 24bit 。 BMP 文件存储数据时, 图像的扫描方 式是按从左到右、从下到上的顺序。 由于 BMP 文件格式是 Windows 环境中交换与图有关 的数据的一种标准,因此在 Windows 环境中运行的图形图像软件都支持 BMP 图像格式。 典型的 BMP 图像文件由四部分组成:
1 :位图文件 头数据结构 ,它包含 BMP 图像文件的类型、显示内容等信息;
2 :位图信息数据结构 ,它包含有 BMP 图像的宽、高、压缩方法,以及定义颜色等信息;
3:调色板 ,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24 位 的 BMP )就不需要调色板;
4 :位图数据 ,这部分的内容根据 BMP 位图使用的位数不同而不同,在 24 位图中直接使 用 RGB ,而其他的小于 24 位的使用调色板中颜色索引值。
三、程序的源代码
package com.lcf.bmp;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.MemoryImageSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
public class BMPLoader
{
/**
* 因为我是直接读取 40位的信息头
所以要将一些 byte 转为 int 即 ChangeInt
即 4个 byte ------- 一个 int
//转成 int
* @param in
* @param offset
* @return
*/
public static int constructInt(byte[] in, int offset)
{
int ret = ((int) in[offset + 3] 0xff);
ret = (ret 8) | ((int) in[offset + 2] 0xff);
ret = (ret 8) | ((int) in[offset + 1] 0xff); ret = (ret 8) | ((int) in[offset + 0] 0xff); return (ret);
}
public static int constructInt3(byte[] in, int offset){ int ret = 0xff;
ret = (ret 8) | ((int) in[offset + 2] 0xff)
ret = (ret 8) | ((int) in[offset + 1] 0xff); ret = (ret 8) | ((int) in[offset + 0] 0xff); return (ret);
}
/**
* 将一些 byte 转为 Long
* @param in
* @param offset
* @return
*/
public static long constructLong(byte[] in, int offset) {
long ret = ((long) in[offset + 7] 0xff);
ret |= (ret 8) | ((long) in[offset + 6] 0xff); ret |= (ret 8) | ((long) in[offset + 5] 0xff); ret |= (ret 8) | ((long) in[offset + 4] 0xff); ret |= (ret 8) | ((long) in[offse
文档评论(0)