我无法使用curl从网址获取图片。如果我将URL作为ImageMagick Image对象的构造函数传递,它就可以工作。但是使用curl我没有太多运气,我需要使用curl。
现在我正在......
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &curlCallback);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_perform(curl);
然后
size_t curlCallback(char* buf, size_t size, size_t nmemb, void* up)
{
ofstream out;
out.open("/home/name/Desktop/img.png");
out.write(buf, nmemb * size);
return size * nmemb;
}
它确实似乎得到了PNG的开始,但不是整个事情。它只返回251个字节(标题信息或者某些东西可能??)。图像查看器将其作为png打开并知道其分辨率,但图像本身为空白。如果我将缓冲区打印到控制台,我会看到?PNG,然后是二进制数据符号。
我知道这不是远程主机的问题,因为如果我使用ImageMagick:
Image image = Image(url);
然后我完整地获得了图像并且可以保存它并且它很好。
答案 0 :(得分:0)
在下载过程中,可以多次调用CURLOPT_WRITEFUNCTION
(在您的情况下为curlCallback
)设置的函数(请参阅文档)。
使用CURLOPT_WRITEDATA
传递FILE*
可能会更容易。