在Delphi7中,我必须处理非常大的24bpp位图(几个100MB)。由于我希望使用Graphcis32库进行进一步处理,因此必须将它们转换为32bpp (TBitmap32)。然而,TBitmap32的LoadFromFile方法创建了一个临时的常规TBitmap来加载原始的24bpp位图,然后将该位图分配给TBitmap32以执行所需的格式转换。当然,如果内存中有两个这样的巨大位图,内存负载大约会增加一倍,这对我的应用程序来说可能是致命的。
我正在考虑的是一种将24bpp位图加载到预先分配的缓冲区中的方法,该缓冲区的大小适合32bpp位图。然后,从buffer端开始,我希望将RGB字节移动到32bpp所需的偏移量。
这个是可能的吗?如何将位图加载到预先分配的缓冲区中?有什么想法吗?
发布于 2009-08-19 16:57:29
我对Graphics32的工作原理知之甚少。但是,如果您使用标准文件格式并可以直接访问TBitmap32像素数据,则应该能够为该格式创建自己的图像加载器,以便在没有其他工作方式的情况下一次性加载和上转换为32bpp。
常见文件格式的规范在互联网上随处可见,您使用的是哪种?
https://stackoverflow.com/questions/1301175
复制相似问题