2010-04-13 7 views
6

को दोबारा दोहराएं, मैं एक वेबसर्वर से रिमोट छवि पुनर्प्राप्त करने में सक्षम होना चाहता हूं, इसे दोहराएं, और उसके बाद ब्राउज़र पर इसे प्रस्तुत करें और इसे फ़ाइल में सहेजें। यहाँ मैं अब तक है:curl का उपयोग कर रिमोट छवि प्राप्त करें, फिर

$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "$rURL"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
$out = curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 

$imgRes = imagecreatefromstring($out); 
imagejpeg($imgRes, $filename, 70); 

header("Content-Type: image/jpg"); 
imagejpeg($imgRes, NULL, 70); 
exit(); 

अद्यतन

उत्तर

4

नीचे चर्चा के आधार पर सही उत्तर प्रतिबिंबित करने के लिए आप imagecreatefromstring() का उपयोग कर एक जी.डी. संसाधन में फ़ाइल प्राप्त कर सके अपडेट किया गया:

imagecreatefromstring() दिए गए डेटा से प्राप्त छवि का प्रतिनिधित्व करने वाला एक छवि पहचानकर्ता देता है। यदि आपके PHP का निर्माण उन्हें समर्थन देता है तो इन प्रकारों का स्वचालित रूप से पता लगाया जाएगा: जेपीईजी, पीएनजी, जीआईएफ, डब्ल्यूबीएमपी, और जीडी 2।

वहां से, यह imagecopyresampled() का उपयोग करके बहुत सरल है।

imagejpeg() का उपयोग करके आउटपुट या जो भी आउटपुट प्रारूप आपको सबसे अच्छा लगा।

बनाओ एक फ़ाइल नाम के साथ उत्पादन:

imagejpeg($image_resource, "/path/to/image.jpg"); 

तो ब्राउज़र के लिए एक ही संसाधन भेजें:

header("Content-type: image/jpeg"); 
imagejpeg($image_resource); 

छवि के प्रारूप के आधार पर, आप imagepng उपयोग कर सकते हैं() या इसके बजाय imagegif() फ़ंक्शंस।

आप इनपुट फ़ाइल प्रकार के आधार पर विभिन्न आउटपुट प्रारूपों के साथ काम करना चाह सकते हैं। आप getimagesize() का उपयोग कर इनपुट फ़ाइल प्रकार ला सकते हैं।

याद रखें कि आप परिणामस्वरूप जेपीईजी छवि की गुणवत्ता $quality पैरामीटर का उपयोग कर समायोजित कर सकते हैं। डिफ़ॉल्ट 75% है जो बहुत क्रोधित दिख सकता है।

+0

धन्यवाद ... मैंने अब आपकी जानकारी के साथ अपना प्रश्न अपडेट कर दिया है ... इसके लिए छवि के दो पुनर्विक्रय की आवश्यकता है, हालांकि केवल एक के विपरीत .. फिर यह अक्षम है। ऐसा करने का एक बेहतर तरीका क्या है? – Chris

+0

@Chris छवि के दो resamples? क्यूं कर? आप एक ही resampled संसाधन jpeg फ़ाइल में स्टोर करते हैं, और इसकी सेवा करते हैं। आप दो बार resampling क्यों करेंगे? –

+0

क्षमा करें मैंने आपके द्वारा लिखे गए शब्दों का गलत व्याख्या किया। मैंने अपने प्रश्न में कोड अपडेट किया है। यह कम गुणवत्ता वाले एक बार जेपीजी बनाता है। संभवतः यह फ़ाइल आकार को कम करने के लिए पर्याप्त है? इसके बाद मैं इसे फ़ाइल में सहेजता हूं, लेकिन इसे पूरा करने के लिए मुझे फिर से फ़ाइल को पढ़ने की ज़रूरत है, क्या मैं इसे अस्थायी रूप से स्मृति में संग्रहीत नहीं कर सकता या यह एक नगण्य उपरि है? – Chris

संबंधित मुद्दे