如何使用FreeImage_Unload(),并且不要丢失图像数据
How to use FreeImage_Unload(), and don't lose the image data
我有一个看起来像下面的类:
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++射线示踪剂ppm表示没有足够的数据来显示图像
- OpenCV(C++)处理来自JavaScript / Web Assembly的图像数据
- VTK 图像数据,访问数组中的 1 个图像
- 处理来自IMFSourceReader和IMFSample的图像数据
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 如何从amd gpus的显示输出中获取图像数据
- 如何将OpenCV图像数据从Python转换为C++?
- WIC - Exif 元数据查询 - 如何获取图像说明
- 这是我的程序,C++使用 OpenCv 库从数据集中读取图像序列,但它没有运行
- 以高数据速率发送图像数据超过提升::asio::udp?
- 如何将图像数据从搜索窗口中移动到本地存储器OpenCL
- 如何从 GIFLIB 保存图像结构中获取 RGB 颜色数据
- 如何将图像转换为C 中的RGB数据值
- 在C 中显示图像及其元数据
- 如何使用stb_image将像素颜色数据写入 BMP 图像文件?
- 表示图像矩阵的理想数据结构是什么?
- 如何从内存中读取原始图像 (YUV 4:2:2) 格式的图像数据
- 如何使用JNI + OpenCV + NDK获取原始的android相机传感器图像数据
- 使用Sapera拍摄图像并将数据复制到矢量
- 将图像数据尽快写入磁盘