2012-09-09 9 views
7

मुझे पता है कि fcen() के साथ 'फ़ाइल नाम' के रूप में URL के साथ imagecreatefromjpeg(), imagecreatefrompng(), आदि का उपयोग करना संभव है, लेकिन मैं सुरक्षा समस्याओं के कारण रैपर को सक्षम करने में असमर्थ हूं। क्या imagecreatefromX() को सक्षम किए बिना यूआरएल पास करने का कोई तरीका है?क्या मैं fopen wrappers को सक्षम किए बिना imagecreatefromjpeg() के स्रोत के रूप में URL का उपयोग कर सकता हूं?

मैंने भी cURL उपयोग कर, और वह भी मुझे समस्याओं दे रहा है की कोशिश की: (cURL साथ जैसे)

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://www.../image31.jpg"); //Actually complete URL to image 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
curl_close($ch); 

$image = imagecreatefromstring($data); 
var_dump($image); 

imagepng($image); 
imagedestroy($image); 
+0

var_dump क्या कहता है? – FilmJ

+0

इसलिए मैं यूआरएल का उपयोग नहीं कर रहा हूं, लेकिन मैंने अभी इसका परीक्षण किया है, और काम करना प्रतीत होता है। मैंने कुछ परियोजनाओं में ImageMagick के साथ इस विधि का उपयोग किया है, और हमारे मामले में सुरक्षा कारणों से, हमें प्रॉक्सी सर्वर का उपयोग करने की आवश्यकता है, तो शायद यह आपकी समस्या हो सकती है? – FilmJ

+0

var_dump कहता है: संसाधन (65) प्रकार (जीडी) – iRector

उत्तर

17

आप कर्ल का उपयोग कर फ़ाइल डाउनलोड कर सकते हैं तो परिणाम imagecreatefromstring में पाइप करें।

उदाहरण:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $imageurl); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks! 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image. 
    $data = curl_exec($ch); 
    curl_close($ch); 

    $image = imagecreatefromstring($data); 
+0

+1, यह एक अस्थायी फ़ाइल का उपयोग करने के मेरे सुझाव से बेहतर है। मैंने 'imagecreatefromstring' जैसी चीज़ों को देखने की कोशिश की लेकिन इसे अन्य सभी 'imagecreatefrom *' कार्यों के बीच याद किया। –

+0

+1, didn Imagecreatefromstring नहीं पता था। अच्छा टिप! –

+0

एलैन धन्यवाद एफ या CURLOPT_RETURNTRANSFER, मैं उसे भूल गया था। मैंने CURLOPT_BINARYTRANSFER भी जोड़ा ... समझ में आया। – FilmJ

0

तुम हमेशा छवि डाउनलोड कर सकते हैं एक अस्थायी फ़ाइल के लिए, और फिर उस से छवि को लोड फ़ाइल।

1

तुम भी के लिए 'http' stream_wrapper_register का उपयोग कर एक cURL आधारित धारा आवरण को लागू कर सकते हैं।

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

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