我有一个curl回调,其中包含一些标题信息,然后是jpeg图像。
我想从这些数据中复制出jpeg图像并将其保存到文件中 我之前从未使用过malloc或memcpy,但我做了以下事情:
//data = the data that curl has returned
//datalength = the length of the data that curl has returned
//startpos = the starting position of the jpeg image in data
//the length of the jpeg image
//example data
//datalength=13209
//startpos = 62
//imagelangth=13127
bool SaveImage( void* data, size_t datalength, int startpos, int imageLength)
{
//1. Allocate a buffer to store the jpeg image
BYTE* image = (BYTE*)malloc(sizeof(BYTE)*imageLength);
if( image != nullptr)
{
//2. Copy out the image info to the buffer
BYTE* imageStartPos = (BYTE*)data + startpos;
memcpy( image, imageStartPos, imageLength);
//3. Save the image to file
FILE* pFile;
fopen_s(&pFile, "image.jpeg", "w");
if(pFile != NULL)
{
fwrite(image,sizeof(BYTE), imageLength, pFile);
fclose(pFile);
}
}
}
结果是我创建了一个大小约为13k的jpeg图像,但我无法在ms画中打开它,因为它说它已损坏。我假设我在上面的指针计算中犯了一个错误。
任何关于我做错事的人都有任何想法吗?