2009-12-27 11 views
6

केवल एक वैध जीडी छवि संसाधन होने के कारण मूल छवि के प्रकार को खोजना संभव है?PHP/GD - छवि संसाधन प्रकार ढूँढना

उदाहरण के लिए:

$image = ImageCreateFromPNG('http://sstatic.net/so/img/logo.png'); 

मैं मूल छवि प्रकार (PNG) केवल $ छवि चर उपलब्ध होने मिल सकता है?

+0

बात यह है कि आपके कोड पर केवल एक छवि संसाधन पहचानकर्ता उपलब्ध है, इससे कोई फर्क नहीं पड़ता कि मूल वस्तु इस ऑब्जेक्ट के लिए क्या थी। तुम क्यों जानना चाहते हो? – dqhendricks

उत्तर

4

मुझे ऐसा नहीं लगता, नहीं। ImageCreate() फ़ंक्शन द्वारा संसाधित होने के बाद $ छवि जीडी के आंतरिक छवि प्रारूप में है।

+0

धन्यवाद पेक्का। दुर्भाग्य से मैं ऐसा भी नहीं सोचता, लेकिन मैं यह देखने के लिए थोड़ी देर इंतजार कर रहा हूं कि कोई ऐसा करने के तरीके से आ सकता है या नहीं। –

+0

पृष्ठभूमि क्या है? शायद आपकी समस्या के लिए एक अलग कामकाज है? –

+1

यह सही है - छवि जीडी के आंतरिक प्रारूप में है ताकि इसे किसी भी उपलब्ध प्रारूप में आउटपुट किया जा सके। प्रारूप का पता लगाने का एकमात्र तरीका मूल छवि फ़ाइल का उपयोग करना है। –

9

मैं अगर यह $ छवि चर से किया जा सकता है यकीन है कि नहीं हूँ, लेकिन माइम प्रकार प्राप्त करने के लिए, आप आमतौर पर चार से किसी का उपयोग कर सकते हैं: अपने प्रश्न वर्णन मैं ले आप करना चाहते से

// with GD 
$img = getimagesize($path); 
return $img['mime']; 

// with FileInfo 
$fi = new finfo(FILEINFO_MIME); 
return $fi->file($path); 

// with Exif (returns image constant value) 
return exif_imagetype($path) 

// deprecated 
return mime_content_type($path); 

$tmpfname = tempnam("/tmp", "IMG_"); // use any path writable for you 
$imageCopy = file_get_contents('http://www.example.com/image.png'); 
file_put_contents($tmpfname, $imageCopy); 
$mimetype = // call any of the above functions on $tmpfname; 
unlink($tmpfname); 

नोट: इस काम करने के लिए एक दूरस्थ फ़ाइल का उपयोग करें, ताकि आप कुछ इस तरह कर सकता है, तो माइम प्रकार कार्य करते हैं आप का उपयोग करेगा दूरस्थ फ़ाइलों का समर्थन करता है, यह सीधे उपयोग करते हैं, बजाय फ़ाइल की एक प्रतिलिपि बनाने की पहले

यदि आपको माइम टाइप की आवश्यकता है तो यह निर्धारित करने के लिए कि imagecreatefrom फ़ंक्शन का उपयोग करने के लिए, फ़ाइल को स्ट्रिंग के रूप में पहले लोड क्यों न करें और फिर जीडी निर्णय लें, उदा।

// returns GD image resource of false 
$imageString = file_get_contents('http://www.example.com/image.png'); 
if($imageString !== FALSE) { 
    $image = imagecreatefromstring($imageString); 
} 
+0

नहीं, यह वही नहीं है जो मुझे चाहिए क्योंकि मेरे पास पथ तक पहुंच नहीं है। = \ –

+0

लेकिन आपके पास * कुछ * पथ तक पहुंच है, है ना? – Gordon

+0

नहीं, वह केवल खुले छवि संसाधन के लिए नहीं है। –

0

आप केवल पीएनजी लोडर के साथ संसाधन लोड करने का प्रयास कर सकते हैं, और यदि यह एक पीएनजी छवि नहीं है, तो यह विफल हो जाएगा, गलत लौट रहा है। फिर बस उन मान्य प्रारूपों के साथ दोहराएं जिन्हें आप चाहते हैं, और यदि सभी असफल होते हैं, तो एक त्रुटि प्रदर्शित करें।

+0

संसाधन खोलना कोई समस्या नहीं है ... –

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