2011-07-11 33 views
5

Bir web sayfasından bir görüntü alma içeren bir proje için libcurl kullanmak istedim. URL şuna benzer:Libcurl kullanarak görüntü nasıl kaydedilir

http://xxx.xxx.xxx.xxx/cgi-bin/anonymous/image.jpg

komut satırı cURL kullanarak ben alıyorum çünkü

$curl -o sampleimage.jpg http://xxx.xxx.xxx.xxx/cgi-bin/anonymous/image.jpg 

ben libcurl'da bu kodun eşdeğer bilmek istiyorum kullanarak görüntüyü alabilir fındık şimdi. Bu örnek kaynağını ağda aldım ve derler ve bir şeyler yapar ancak görüntü dosyasını hiçbir yerde göremiyorum.

#include <iostream> 
#include <curl/curl.h> 
#include <stdio.h> 

using namespace std; 

int main(){ 
CURL *image; 
CURLcode imgresult; 
FILE *fp; 

image = curl_easy_init(); 
if(image){ 
    // Open file 
    fp = fopen("google.jpg", "wb"); 
    if(fp == NULL) cout << "File cannot be opened"; 

    curl_easy_setopt(image, CURLOPT_URL, "http://192.168.16.25/cgi-bin/viewer/video.jpg"); 
    curl_easy_setopt(image, CURLOPT_WRITEFUNCTION, NULL); 
    curl_easy_setopt(image, CURLOPT_WRITEDATA, fp); 


    // Grab image 
    imgresult = curl_easy_perform(image); 
    if(imgresult){ 
     cout << "Cannot grab the image!\n"; 
    } 
} 

// Clean up the resources 
curl_easy_cleanup(image); 
// Close the file 
fclose(fp); 
return 0; 
} 

BTW ben Mac kullanıyorum ve bir libcurl kütüphanesi vardır XCode bu kodu derleme:

Bu

kodudur. * Hata düzeltildi.

* DÜZENLEME: * Sorun düzeltildi. Sadece fopen() için tam bir yol kullandım. Teşekkürler Mat! Lütfen cevabınızı doğru cevap olarak seçebilmemiz için lütfen soruları cevaplayın. Teşekkürler!

+0

'Aç 'çağrısında tam bir yol kullanın, böylece nereye bakacağınızı bileceksiniz. – Mat

+0

Denerim. Ama bunu mac ile nasıl yaparım? Windows dosya sisteminde nasıl yapılacağını biliyorum, ancak Mac'te değil. Teşekkürler. – IBG

+0

Yorum yapan adamı nasıl bilgilendiririm ?! Bu adamla sorunu çözdüm. Hey Mat, lütfen cevap verin, böylece cevabınızı seçebilirim. Teşekkürler! – IBG

cevap

3

Açık aramanın tam yolunu kullanarak, nereye bakacağınızı bilmenizi sağlayın.

Ayrıca, perror işlevine de bakmanız gerekir, böylece açıkken neden başarısız olursa, birkaç baş ağrısından tasarruf edebilirsiniz.

Son şey: fp null'a, yoksa gerçekten açıksa fclose(fp) numaralı hatayı. Bu durumda, curl_easy_init başarısız olursa, fclose rastgele bir işaretçiyi denersiniz.

+0

Yanıt ve ek bilgi için teşekkürler! – IBG