`
C_SHaDow
  • 浏览: 51923 次
  • 性别: Icon_minigender_1
  • 来自: 大同
社区版块
存档分类
最新评论

24位真彩BMP格式

J# 
阅读更多

BMP文件格式分析有很多,官方的资料已经通通涵盖在那份附件里了。这里具体些两个我遇到的问题...

No.1 BMP文件中低位在前。在读超过两个字节表示的数据时要格外小心一点:比如一个四字节的数据,共32位。这32位是一个整体,不能分成4个8位来看。以下是我的代码:

/**
 * 读取位图文件中的数字型标签
 * @param dins 数据输入流对象
 * @param tagLen 该数字型标签的长度
 * @return 位图文件中的数字型标签。读取异常则返回-1。
 */
private int readFileSize(java.io.DataInputStream dins, int tagLen){
	int fileSize = 0;
	try{
	      byte[][] size = new byte[tagLen][8];
	      //索引0->3,低位->高位。
	   for(int i=0; i<tagLen; i++){
	             byte s = dins.readByte();
	             if(s<0){
		short ss = (short) (s + 256);
		size[i] = myBitSet(ss);
	             }else{
		size[i] = myBitSet(s);
	             }
	             for(int j=0; j<8; j++){
	                  fileSize += size[i][j] * Math.pow(2, (i * 8 + j));
	             }
	      }
	      return fileSize;
	}catch(Exception e){
	      e.printStackTrace();
	      return -1;
	}

 

/**
 * 有一个byte值得到一个byte数组
 * @param b byte型值
 * @return 按索引0->7,低位->高位
 */
private byte[] myBitSet(short b){
              byte[] bs = new byte[8];
              for(int i=0; i<8; i++){
                       bs[i] = (byte) (b%2);
                       b = (byte) (b/2);
              }
              return bs;
}

 No.2 就是关于官方资料中不太明确的比特补满。这里只明确:它是在每一行的末尾如果出现不满足4的倍数时不上几个字节。我做的测试文件中,除四后的余数为3的,只需在每行末尾忽略一个字节;余数为1的...(我是没忽略什么也读过来了);目前还没找到余数为2的...

 

 

1
0
分享到:
评论

相关推荐

    三分钟解析24位真彩BMP格式文件

    **三分钟解析24位真彩BMP格式文件** BMP(Bitmap)是Windows操作系统中最常见的位图图像格式,它不包含任何压缩,因此文件体积较大,但图像质量较高。在24位真彩BMP格式中,每个像素由3个字节表示,分别代表红、绿...

    批量PNG转32位BMP工具

    32位BMP格式意味着每个像素有8位红、绿、蓝(RGB)分量以及额外的8位Alpha通道,用于表示透明度,这使得32位BMP非常适合用于用户界面(UI)开发,因为它可以处理复杂的透明效果。 描述中提到的“32位真彩UI开发专用...

    (直接创建+读取)(灰度+真彩bmp文件

    真彩色图像使用多个通道(通常是红、绿、蓝)来表示像素颜色,每种颜色使用8位,总共24位。这种表示方式可以显示大约1670万种颜色。在BMP文件中,真彩色图像通常没有颜色表,而是直接存储像素的RGB值。 4. 创建BMP...

    真彩图像8位灰度化代码

    BMP是Microsoft Windows操作系统中的位图文件格式,支持多种位深度,包括24位真彩色和8位索引颜色。24位真彩色图像每个像素由红、绿、蓝三个颜色通道组成,每个通道8位,总共24位。而8位的BMP图像通常包含一个颜色...

    VC制作真彩工具条(包含demo)

    在早期的Windows系统中,工具条的图像通常限制为256色,而在现代系统中,我们追求更高的色彩质量,即真彩色(通常指24位色,每个像素包含红、绿、蓝三个颜色通道,每个通道8位)。 制作真彩工具条涉及到的关键技术...

    靖源万能真彩图标activex控件

    是一款生成24位真彩图标的软件,软件开发者的福音,从今天开始,您不用再为图标真彩的问题所困扰,本控件彻底解决了delphi中ticon只支持16色和固定32X32大小的难题,完全支持保存为24位真彩图标!主要特点如下: 1.把icon...

    C语言写的800 * 600 真彩显示bmp文件

    标题"800 * 600 真彩显示bmp文件"表明我们要讨论的是一个使用C语言编写的程序,该程序能显示分辨率为800像素宽、600像素高的、拥有64K色(即16位色)的BMP图像。 在C语言中,处理BMP文件通常涉及以下几个关键知识点...

    BMP文件格式-BMP文件格式

    BMP 文件格式是图像文件的一种常见格式,它由文件头、位图信息头、颜色信息和图形数据四部分组成。下面对每个部分进行详细介绍: 1. 文件头(BITMAPFILEHEADER) 文件头是 BMP 文件的开头部分,它包含了 BMP 文件...

    一个效果非常好的24,16bit真彩位图转化成256彩色或黑白位图的演示程序

    位图,也称为BMP文件,是Windows操作系统中常见的图像文件格式,支持24位和16位真彩色。在某些场景下,如旧设备显示、网络传输或内存优化,可能需要将这些高色彩深度的位图转换为256色或者黑白位图。这个“一个效果...

    yuvtools.rar_YUV2BMP.exe_YUVTools rgb装bmp_YUVviewer.exe_yuvviewe

    该文件包括一些内容,可配套图像处理使用 ...输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值

    视频图像处理工具合集(YUV,BMP)

    输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值 YUV2SEQ.exe 将单帧的YUV文件转换位YUV序列 4:2...

    BMP2BIN.exe

    可以批量(目录及子目录下的所有文件)将BMP格式的图片转换为BIN文件 ...转换的规则 在博客中有具体介绍 16和24位的BMP 都可以转为16真彩的BIN https://blog.csdn.net/qq_29624813/article/details/103729326

    Wil+Wis真彩编辑器

    7. **格式支持**:广泛支持JPEG、PNG、BMP、TIFF、PSD等多种图像格式,方便导入导出。 8. **批处理功能**:一键处理多个文件,提高工作效率。 9. **历史记录**:保存编辑步骤,随时回溯到任何修改前的状态。 10. **...

    c++图像处理:24位真彩图颜色变换实例

    在主函数`main`中,首先打开输入文件并检查是否为BMP格式,以及是否为24位真彩图像。然后,创建一个新的输出文件用于写入处理后的图像数据。在读取图像数据时,程序逐行处理,对于每行中的每个像素,调用`isred`函数...

    JPEG.rar_BMP JPEG

    JPEG支持24位真彩色,同时还有8位灰度图像模式。文件扩展名通常为.jpg或.jpeg。 **2. BMP格式详解** 与JPEG不同,BMP格式采用无损压缩或不压缩的方式存储图像,保留了原始数据的所有细节,因此BMP文件通常较大。BMP...

    将rgb真彩图像转化为256色

    通常,这样的程序会读取RGB真彩图像,对每个像素进行处理,然后将结果保存为8位的BMP格式文件。BMP是一种常见的位图格式,支持多种色彩深度,包括8位,且结构相对简单,便于处理。 “www.pudn.com.txt”可能是提供...

    BMP图像文件结构剖析

    相比于其他图像格式(如JPEG、PNG等),BMP格式的主要特点是无损、未压缩,并且包含完整的色彩信息,因此在图像质量方面表现优异,但文件体积相对较大。 #### 二、BMP文件结构 BMP文件可以分为四个主要部分: 1. ...

Global site tag (gtag.js) - Google Analytics