在 C/C++ 中将 64 位 bmp 文件转换为数组
Converting 64-bit bmp file to array in C/C++
嗯,我是C++的新手,已经两天没有寻找示例、解释了,我尝试了不同的库,但我做不到,所以我只是寻求帮助。
我有一张.bmp图片,我知道高度和长度,我想在我的程序中用作 2D 数组。
所以我找到了这段代码,但它不起作用。问题是我的图像是 64 bpp,尽管视觉上是单色的。
我已经阅读了文档,但我不明白,因为我在C++以及与低级编程相关的所有方面的技能很差。
您认为可以将以前的代码改编为每像素 64 位的 bmp 图像吗?
据我所知,位图文件格式不支持每个组件 64 位。 我不知道有任何文件格式允许这种格式(尽管如果不存在,我会感到惊讶)。
我发现很难理解为什么图像格式组件需要如此广泛的范围。
编辑 :鉴于您的评论,是的,绝对可以调整该代码。 虽然值得注意的是 0..63(64 色阶)是 6 位。 不过,我假设浪费了 2 位。
如果它是灰度并且组件为 8bpp,则非常简单。 基本上,您需要的存储空间是宽度*高度字节。
char* pBitmap = malloc( bmp.width * bmp.height );
然后,您可以将像素直接发送到上面的字符缓冲区中,读取单个宽度 * 高度。
编辑 2:
好的,每个组件 16 位,有 4 个组件,您需要这样的结构:
struct Pixel16RGBA
{
unsigned short r;
unsigned short g;
unsigned short b;
unsigned short a;
};
然后按如下方式分配:
Pixel16RGBA* pBitmap = (Pixel16RGBA)malloc( bmp.width * bmp.height * 4 * sizeof( unsigned short ) );
然后,您将像以前一样使用上面malloc中计算的大小来浏览整个图像。
相关文章:
- 从 bmp 文件数据创建 MFC CBitmap
- 将 bmp 文件加载到 TSpeedButton 中
- 在 BMP 文件中查找隐藏的消息
- C++,我正在尝试创建一个有效的.bmp输出文件
- 如何在C++的四叉树中存储 bmp 文件?
- 如何使用stb_image将像素颜色数据写入 BMP 图像文件?
- C++:读取.BMP文件时出现问题;文件结束时间早于预期
- 无法加载.bmp文件win32
- 读取BMP文件会归还意外数据
- 在C++中读取bmp文件的宽度和高度
- 在C 中读取并编写BMP文件
- 在BMP文件中保存屏幕截图的设备上下文
- 读取 BMP 文件C++(读取 BMP 标头时出现问题)
- JPEG编码位图(BMP)图像从文件使用libjpeg / C++
- 将图像文件(.BMP)复制到其他位置
- BMP 文件,访问数据
- BMP文件行填充问题
- C++:将整数的文本文件转换为BMP格式的位图图像文件
- 我的代码在尝试创建BMP文件时失败
- 加载位图文件(.bmp)