Bitmap 将图像从阵列转换为位图,偏移量可以';不能正确设置为54

Bitmap 将图像从阵列转换为位图,偏移量可以';不能正确设置为54,bitmap,offset,image-conversion,Bitmap,Offset,Image Conversion,我正在使用MiniLibX进行Raytracer学校项目。我想拍摄光线跟踪器的快照并将其存储到“.bmp”位图文件中 我在网上找到了一本非常有用的指南: 除了偏移设置外,其他一切似乎都正常工作 如果我在标题中将其设置为0,则图像的前18个像素是随机的,我从右侧左侧得到一条条纹(18像素宽)。如果我将偏移量设置为54字节(应该偏移的正确字节数),则文件已损坏(没有软件会打开它) 下面是一个示例(请参见左侧的阴影): 因此,我找到了另一个资源来帮助我打印文件中记录的实际标题,并检查错误(请参阅)。

我正在使用MiniLibX进行Raytracer学校项目。我想拍摄光线跟踪器的快照并将其存储到“.bmp”位图文件中

我在网上找到了一本非常有用的指南:

除了偏移设置外,其他一切似乎都正常工作

如果我在标题中将其设置为0,则图像的前18个像素是随机的,我从右侧左侧得到一条条纹(18像素宽)。如果我将偏移量设置为54字节(应该偏移的正确字节数),则文件已损坏(没有软件会打开它)

下面是一个示例(请参见左侧的阴影):

因此,我找到了另一个资源来帮助我打印文件中记录的实际标题,并检查错误(请参阅)。我发现如果我将偏移量设置为1,位图会记录65536的偏移量,当我将其设置为54时,它会显示65536*54

我不知道什么会使我写的偏移量发生巨大的变化,我很想知道不同的软件是如何读取位图的。我已经阅读了很多关于堆栈溢出和整个web的主题,但没有找到这个确切的问题。这篇帖子与之类似,但问题的根源对我来说似乎不同(我无法理解我的问题):

我唯一的猜测是它可能与颜色表有关,但我不确定我是否理解这是必要的


无论如何,如果你想看看我的代码,我会上传它,谢谢你在这个问题上的任何线索

在此代码中,示例偏移量\位应为
sizeof(位图\文件\头)+sizeof(位图\图像\头)
。如果使用调色板,偏移量_位还应包括调色板大小。某些程序能够使用无效的偏移量_位打开.bmp文件。然而,这意味着他们不正确地解析.bmp格式,可能会忽略调色板数据。看看这段代码,它显示了两种情况:有和没有调色板:谢谢你的参考,我会研究它!对于偏移量,尽管我试图给偏移量指定该值(文件头+图像头的大小),但我的函数似乎写了其他内容。。。