复制图像原始数据

时间:2014-04-21 13:55:08

标签: c image

每次发生更改时,我都会从线程获取一个指向原始图像数据的指针,并且我希望在另一个线程使用它之前复制它。如果我不知道原始数据的大小,我怎样才能实现这一点,因为它随机选择一个大小并提供原始数据?如何从此指针复制原始数据?

1 个答案:

答案 0 :(得分:0)

要复制原始指针“data”,您需要其他信息:此数据的大小。原始数据指向图片,因此您在创建时已经拥有widthheight;如果这不是8位/像素图像,您可能还有bpp(每像素字节数)。将这三者相乘可以得到原始数据大小。

目前,您只转发原始数据的地址。要访问其他变量,您还需要转发其余变量。

一个选项(根据我的评论)是将malloc原始数据大小扩展为存储widthheight(以及可选地,bpp)所需的大小并在一开始就存储它们。

更好的方法(因为更易于管理)是创建struct

struct myData_t {
   int width;
   int height;
   void *data;
} myData, *myDataPtr;

使用您的数据填充此结构并将其地址返回到您的其他功能。

请记住以正确的顺序清理内存:首先,免费myDataPtr->data,然后才免费myDataPtr