2
У меня есть класс, который выглядит следующим образом:Как пользоваться FreeImage_Unload(), и не потерять данные изображения
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», я не теряю информацию?
Любые предложения?
Обратите внимание, что если в поле есть отступы, правильнее делать GetPitch() x GetHeight() для вычисления длины в malloc и memcpy – StarShine