将24bpp位图的原位转换为32bpp

时间:2009-08-19 16:42:39

标签: delphi bitmap graphics32

在Delphi 7中,我必须处理相当大的24bpp位图(几个100 MB)。由于我想使用Graphcis32库进行进一步处理,因此必须将它们转换为32bpp(TBitmap32)。但是,TBitmap32的LoadFromFile方法会创建一个临时的常规TBitmap来加载原始的24bpp位图,然后将其分配给TBitmap32以执行所需的格式转换。当然,内存中有两个巨大的位图,内存负载大约翻了一倍,这对我的应用程序来说可能是致命的。

我想到的是一种将24bpp位图加载到预分配缓冲区的方法,该缓冲区的大小使得32 bpp位图适合。然后,从缓冲区开始,我想将RGB字节移动到偏移量需要32bpp。

这可能吗?如何将位图加载到预分配的缓冲区?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不太了解Graphics32的工作原理。但是,如果您使用标准文件格式并且可以直接访问TBitmap32像素数据,那么您应该能够创建自己的图像加载器,用于加载和向上转换为32bpp的格式,如果没有其他工作则可以。

常见文件格式的规格遍布互联网,您使用哪一种?