gpt4 book ai didi

c++ - 如何使用FreeImage_Unload(),不丢失图像数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:20 25 4
gpt4 key购买 nike

我有一个如下所示的类:

class myTexture
{
public:
myTexture();
~myTexture();
unsigned char * data;
void loadFile(string file)
{
FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
FIBITMAP *dib(0);
BYTE* bits;

fif = FreeImage_GetFileType(filename.c_str(), 0);
if(fif == FIF_UNKNOWN)
fif = FreeImage_GetFIFFromFilename(filename.c_str());

if(FreeImage_FIFSupportsReading(fif))
dib = FreeImage_Load(fif, filename.c_str(), 0);

bits = FreeImage_GetBits(dib);
data = bits;
FreeImage_Unload(dib);
}
};

当我执行 FreeImage_Unload(dib) 时,我丢失了数据信息,如何将“位”上的信息复制到“数据”,以便在卸载“dib”时不会丢失信息?

有什么建议吗?

最佳答案

您必须将图像数据从 FreeImage 的 DIB 复制到一个单独的位置:

int Width  = FreeImage_GetWidth( dib );
int Height = FreeImage_GetHeight( dib );
int BPP = FreeImage_GetBPP( dib ) / 8;
bits = FreeImage_GetBits( dib );
data = malloc( Width * Height * BPP );
memcpy( data, bits, Width * Height * BPP );

现在你可以释放 dib 了。

关于c++ - 如何使用FreeImage_Unload(),不丢失图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10628406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com