2009-08-15 21 views
10

PHP'nin getimagesize() işlevinden döndürülen 3. değer için olası tüm sonuçları bilen var mı? Örnek Aşağıda bu kod döndürür:PHP getimagesize() hangi dosya türlerini döndürür?

bir jpg görüntü için
  • $imageinfo['2'] = 2;, bir png görüntü için
  • $imageinfo['2'] = 3;,
  • $imageinfo['2'] = 0; bir gif görüntü için.

Sayılar yukarıda doğru olmayabilir, ancak siz bu fikri alırsınız.

Php.net'de veya başka bir yerde 3. değer için olası tüm sonuçların bir listesini bulamıyorum.

$imageinfo = getimagesize($imageurl); 
$image_type = $imageinfo['2']; 

cevap

28

bu yürütün. Flash SWF kabul görüntülerdir görebilir ve aslında getimagesize() SWF nesnesinin genişliğini ve yüksekliğini okuyabilecek olduğu gibi

[IMAGETYPE_GIF] => 1 
[IMAGETYPE_JPEG] => 2 
[IMAGETYPE_PNG] => 3 
[IMAGETYPE_SWF] => 4 
[IMAGETYPE_PSD] => 5 
[IMAGETYPE_BMP] => 6 
[IMAGETYPE_TIFF_II] => 7 
[IMAGETYPE_TIFF_MM] => 8 
[IMAGETYPE_JPC] => 9 
[IMAGETYPE_JP2] => 10 
[IMAGETYPE_JPX] => 11 
[IMAGETYPE_JB2] => 12 
[IMAGETYPE_SWC] => 13 
[IMAGETYPE_IFF] => 14 
[IMAGETYPE_WBMP] => 15 
[IMAGETYPE_JPEG2000] => 9 
[IMAGETYPE_XBM] => 16 
[IMAGETYPE_ICO] => 17 
[IMAGETYPE_UNKNOWN] => 0 
[IMAGETYPE_COUNT] => 18 

: benim PHP 5.3 yüklemesinde ben bu değerleri var. Benim için ilk keşfettiğimde bir merak gibiydi, bu yüzden burada bahsetti. daha insan tarafından okunabilir bir şey haline endeksi 2 olarak getimagesize() tarafından döndürülen değeri dönüştürmek isterseniz

+0

İyi bir yanıt, görüntü dosyası türlerini sizin için filtreleyecek bir kod parçası içeren başka bir yanıt ekledim. – mjsa

5

Bu dizin, PHP'nin IMAGETYPE_XXX constants öğesinin değerini içerir. Bunların bir listesi, o sayfada, aşağı doğru. Bu sayfa, her birinin gerçek INT değerini sağlamaz, ancak değerleri gerektiği gibi almak için birkaç tane yazdırabilmeniz gerekir. Belirli bir birine arıyorsanız Ayrıca bir karşılaştırma kontrol yapabilirdi:

if ($imageinfo[2] == IMAGETYPE_IFF) { 
    // Code here 
} 
+1

DİKKAT o tırnaklı PHP manuel sayfası (http://www.php.net/manual/en/image .constants.php), "IMAGE_JPG", "IMAGE_GIF" adlı yapılarla başlar. Bunlar doğru sabitler DEĞİLDİR. Sayfanın daha aşağısında bulunan ve IMAGETYPE_GIF, IMAGETYPE_PNG vb. Ile başlayan sabitleri istiyorsunuz ... hatayı bulmak için bana bir saat sürdü. –

2

the manual alıntı:

Endeksi 2. resmin türünü belirtmek üzere IMAGETYPE_XXX sabitleri biridir.

Ve GD

1

getimagesize tarafından tanımlanan diğer aralarında aşağıdaki IMAGETYPE_* constants birinin bir değer döndürür, this page OSB bu sabitleri bulabilirsiniz.

print_r(get_defined_constants()); 

Sonra IMAGETYPE_ öneki sabitler arayın:

1

, sana bu tür bir işlev kullanmayı düşünebilirsiniz: Benzer

$imageTypeArray = array 
(
    0=>'UNKNOWN', 
    1=>'GIF', 
    2=>'JPEG', 
    3=>'PNG', 
    4=>'SWF', 
    5=>'PSD', 
    6=>'BMP', 
    7=>'TIFF_II', 
    8=>'TIFF_MM', 
    9=>'JPC', 
    10=>'JP2', 
    11=>'JPX', 
    12=>'JB2', 
    13=>'SWC', 
    14=>'IFF', 
    15=>'WBMP', 
    16=>'XBM', 
    17=>'ICO', 
    18=>'COUNT' 
); 

$size = getimagesize($filename); 

$size[2] = $imageTypeArray[$size[2]]; 

Ya bir şey. görüntü sabitleri üzerinde

0

yukarıda değinilen sayfalar yalnızca görüntüyü sabit isimleri, görüntü sabitleri saklanmayan tamsayılar ver.Yukarıdaki betikler tamsayıları verir, ancak tam bir resmi bir PHP el kitabında tamsayıların listesini http://www.php.net/manual/en/function.exif-imagetype.php

3

adresinde buldum. Önceden belirtilen sabitler, get_defined_constants() listesindeki desteklenen görüntü türlerinde IMAGETYPE ile başlar.

Ancak, sadece bu çalıştırın ve eğer olanları desteklendiği söyleyecektir:

function imageTypes() { 

    $imageTypes = array(); 

    foreach(get_defined_constants() as $key => $value){ 
     $keyStart = explode('_', $key); 
     if($keyStart[0] == 'IMAGETYPE'){ 
      array_push($imageTypes, $key); 
     } 
    } 
    return $imageTypes; 
} 

echo "<pre>"; 
var_dump(imageTypes()); 
echo "</pre>";