2011-09-12 19 views
11

यदि छवि PHP में मान्य है की जाँच करने के लिए सबसे अच्छा और सबसे तेज़ तरीका क्या है? मैं इसे GIF, JPG के साथ-साथ PNG छवियाँ जांच करने के लिए सक्षम होना चाहिए।यह जांचने का सबसे अच्छा और तेज़ तरीका क्या है कि छवि PHP में मान्य है या नहीं?

+4

क्या आप "वैध" मतलब है:

यहाँ एक उदाहरण है? यह जांच रहा है कि छवि फ़ाइल सही प्रारूप में है या नहीं? –

उत्तर

4

मुझे लगता है कि getimagesize:

list($width, $height, $type, $attr) = getimagesize("path/to/image.jpg"); 

if (isset($type) && in_array($type, array(
    IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF))) { 
    ... 
} 
+5

प्रलेखन पढ़ें: यह जांचने के लिए getimagesize() का उपयोग न करें कि एक दी गई फ़ाइल एक वैध छवि है। http://php.net/manual/en/function.getimagesize.php –

-1

मैं इस समारोह का उपयोग करें ... यह यूआरएल की जाँच करता है भी

function isImage($url){ 
    $params = array('http' => array(
       'method' => 'HEAD' 
      )); 
    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) 
     return false; // Problem with url 

    $meta = stream_get_meta_data($fp); 
    if ($meta === false){ 
     fclose($fp); 
     return false; // Problem reading data from url 
    } 
} 
+0

हाँ तुम सही ... जोड़ दिया जाता है ब्रैकेट। –

24

exif_imagetype एक बेहतर समाधान है।

इस विधि का उपयोग कर getimagesize से तेज है। php.net के शब्दों में "वापसी मान एक ही मूल्य है कि getimagesize() सूचकांक 2 लेकिन exif_imagetype() बहुत तेजी से है में देता है।"

function is_image($path) 
{ 
    $a = getimagesize($path); 
    $image_type = $a[2]; 

    if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP))) 
    { 
     return true; 
    } 
    return false; 
} 
+1

बेशक यह केवल तब काम करता है जब EXIF ​​एक्सटेंशन सक्षम होता है। मेरे मामले में यह मामला नहीं है और मेरा इस पर कोई नियंत्रण नहीं है :( –

-1

मैं इस का उपयोग PHP documentation:

"जाँच करने के लिए कि किसी दिए गए फ़ाइल एक वैध image.Use एपी है getimagesize() का उपयोग न करें प्रयोजन-निर्मित समाधान जैसे फ़ाइलइन्फो एक्सटेंशन के बजाय। "

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
$type = finfo_file($finfo, "test.jpg"); 

if (isset($type) && in_array($type, array("image/png", "image/jpeg", "image/gif"))) { 
    echo 'This is an image file'; 
} else { 
    echo 'Not an image :('; 
} 
1

exif_imagetype getimagesize की तुलना में बहुत तेजी से होता है और

function isImage($pathToFile) 
{ 
    if(false === exif_imagetype($pathToFile)) 
    return FALSE; 

    return TRUE; 
} 
2

(एक leaner मेम पदचिह्न छोड़ने) द्वारा सिफारिश के रूप में उपयोग नहीं करता है जी.डी.-लिब:

if(exif_imagetype('path/to/image.jpg')) { 
    // your image is valid 
} 
संबंधित मुद्दे

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