2009-08-15 8 views
10

Qualcuno conosce tutti i possibili risultati per il 3 ° valore restituito dalla funzione getimagesize() di PHP? Esempio il codice di seguito restituirà:Che tipo di tipi di file viene restituito da getimagesize() PHP?

  • $imageinfo['2'] = 2; per un'immagine jpg,
  • $imageinfo['2'] = 3; per un'immagine png,
  • $imageinfo['2'] = 0; per un'immagine gif.

I numeri potrebbero non essere corretti sopra ma si ottiene l'idea.

Non riesco a trovare su php.net o altrove un elenco di tutti i possibili risultati per il 3 ° valore.

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

risposta

28

Esegui questo:

print_r(get_defined_constants()); 

e poi cercare le costanti con prefisso IMAGETYPE_. Sulla mia installazione di PHP 5.3 ho ottenuto questi valori:

[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 

Come si può vedere Flash SWF sono immagini considerate, e in realtà getimagesize() è in grado di leggere la larghezza e l'altezza di un oggetto SWF. Per me è sembrata una curiosità quando l'ho scoperta per la prima volta, ecco perché l'ho menzionata qui.

+0

Buona risposta, ho aggiunto un'altra risposta che include un pezzo di codice che farà il filtraggio dei tipi di file immagine per voi. – mjsa

5

Questo indice contiene il valore di uno di PHP IMAGETYPE_XXX constants. Un intero elenco di essi può essere trovato su quella pagina, verso il basso. Quella pagina non fornisce il reale valore INT di ciascuno ma dovresti essere in grado di stamparne alcuni per ottenere i valori necessari. Si potrebbe anche fare un controllo di confronto, se siete alla ricerca di uno specifico:

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

fate attenzione che la pagina di manuale di PHP citato (http://www.php.net/manual/en/image .constants.php) inizia con constatns chiamato 'IMAGE_JPG',' IMAGE_GIF'. Queste NON sono le costanti giuste. Volete delle costanti che sono più in basso nella pagina e iniziano con 'IMAGETYPE_GIF',' IMAGETYPE_PNG' e così via ... mi ci è voluta un'ora per trovare l'errore. –

2

Citando the manual:

Indice 2 è uno dei IMAGETYPE_XXX costanti che indicano il tipo di immagine del .

E si possono trovare queste costanti ONH this page, tra l'altro definito da GD

1

Se si desidera convertire valore restituito da getimagesize() come indice 2 in qualcosa di più leggibile, si può considerare l'utilizzo di una funzione come questa:

$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]]; 

o qualcosa di simile.

0

Le pagine di cui sopra cui sulle costanti immagine solo dare l'immagine costante nomi, non i numeri interi memorizzati nelle costanti di immagine.Gli script di cui sopra dare i numeri interi, ma ho trovato un elenco dei numeri interi in una pagina ufficiale manuale di PHP a http://www.php.net/manual/en/function.exif-imagetype.php

3

Come accennato in precedenza costanti che iniziano con imagetype in get_defined_constants() Lista supportati tipi di immagine.

Tuttavia, se si esegue questo e vi dirà quali sono supportati:

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>";