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的...
分享到:
相关推荐
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1896092
24位真彩bmp格式图片读入,转成8位灰度bmp文件写入文件,完整C++工程,开发工具VC6.0
是一款生成24位真彩图标的软件,软件开发者的福音,从今天开始,您不用再为图标真彩的问题所困扰,本控件彻底解决了delphi中ticon只支持16色和固定32X32大小的难题,完全支持保存为24位真彩图标!主要特点如下: 1.把icon...
输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值 YUV2SEQ.exe 将单帧的YUV文件转换位YUV序列 4:2...
该文件包括一些内容,可配套图像处理使用 ...输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值
可以批量(目录及子目录下的所有文件)将BMP格式的图片转换为BIN文件 ...转换的规则 在博客中有具体介绍 16和24位的BMP 都可以转为16真彩的BIN https://blog.csdn.net/qq_29624813/article/details/103729326
可将rgb真彩图片转化为256色灰度图,保存为bmp格式的图片
输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值 YUV2SEQ.exe 将单帧的YUV文件转换位YUV序列 4:2...
输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值 YUV2SEQ.exe 将单帧的YUV文件转换位YUV序列 4:2...
靖源bmp2avi是一款把多个bmp文件生成avi动画的软件,支持32位真彩,支持添加字幕,支持压缩格式,支持背景音乐,支持生成压缩格式avi。可把照片生成为avi动画,再用别的工具转化一下,即可在vcd上放。
目前支持写入的目标格式有:标准JPEG(全部格式)、BMP(24位)、TIFF(灰度和真彩)、PNG(24位)、PPM(文本和二进制模式)、PGM(文本和二进制模式)、PBM(文本和二进制模式)、PCX(24位)、PICS(24位)、SGI...
RLE压缩)、PCD(取第三幅),目前支持写入的目标格式有:标准JPEG(全部格式)、BMP(24位)、TIFF(灰度和真彩)、PNG(24位)、PPM(文本和二进制模式)、PGM(文本和二进制模式)、PBM(文本和二进制模式)、PCX...
目前支持写入的目标格式有:标准JPEG(全部格式)、BMP(24位)、TIFF(灰度和真彩)、PNG(24位)、PPM(文本和二进制模式)、PGM(文本和二进制模式)、PBM(文本和二进制模式)、PCX(24位)、PICS(24位)、SGI...
输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值 YUV2SEQ.exe 将单帧的YUV文件转换位YUV序列 4:2...
使用Matlab或者VC实现下面三个内容,注意区分真彩图像和索引...1、 将硬盘上的BMP格式图像导入内存并显示 2、 将内存中的图像以BMP格式存到硬盘上 3、 实现不同图像格式(BMP、JPEG、TIFF、GIF、PNG等)间的相互转换
输出BMP文件为24位真彩 SeqCut.exe 实现对YUV4:2:0文件的剪切操作 即从序列文件中取出一段序列 SeqSnr.exe 实现了两序列对应帧之间Y分量的SNR求取,并给出平均值 YUV2SEQ.exe 将单帧的YUV文件转换位YUV序列 4:2...