0
我無法使用curl從URL獲取圖像。如果我將URL作爲ImageMagick Image對象的構造函數傳遞,它將起作用。但使用捲曲我沒有太多的運氣,我需要使用捲曲。如何使用捲曲獲取圖像?
現在我在做......
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);
然後我得到了它的整體形象,可以保存它,它就好了。
'curlCallback'可以在下載過程中多次調用(請參閱文檔[http://curl.haxx.se/libcurl/c/curl_easy_setopt.html])。使用傳遞FILE *的'CURLOPT_WRITEDATA'可能會更容易。 –
好的電話,擁有這些新知識,我已經打敗了這個問題。如果你想寫這個答案,我會選擇它作爲解決方案。 – Aurast
添加它作爲評論,因爲我沒有工具來嘗試提出的解決方案,很高興你知道了。 –