Ce face getimagesize
getimagesize citește antetul unui fișier imagine și returnează un tablou: [0] lățimea, [1] înălțimea, [2] tipul (o constantă IMAGETYPE_*), [3] textul width="..." height="..." pentru HTML și cheia mime (de exemplu image/png).
Nu are nevoie de extensia GD. Dacă fișierul nu este o imagine recunoscută, returnează false, ceea ce o face utilă pentru a verifica fișierele încărcate de utilizatori.
Parametri
| Parametru | Descriere |
|---|---|
$filename |
Calea către fișier (sau un URL, dacă serverul permite). |
$image_info |
Opțional. Variabilă în care se pun informații suplimentare (de exemplu blocurile APP din JPEG). |
Ce returnează
Un tablou cu dimensiunile și tipul, sau false dacă fișierul nu este o imagine.
Exemple
Exemplul 1: Dimensiunile și tipul unei imagini
Imaginea de test este creată cu GD, ca exemplul să poată rula oriunde.
<?php
imagepng(imagecreatetruecolor(800, 600), "poza.png");
[$latime, $inaltime] = getimagesize("poza.png");
echo "Dimensiuni: {$latime} x {$inaltime} px\n";
$info = getimagesize("poza.png");
echo "Tip: " . $info["mime"] . "\n";
echo '<img src="poza.png" ' . $info[3] . '>';
Rezultat
Dimensiuni: 800 x 600 px
Tip: image/png
<img src="poza.png" width="800" height="600">
Exemplul 2: Verificarea unui fișier încărcat
Extensia din numele fișierului poate fi falsă. getimagesize se uită la conținut.
<?php
imagejpeg(imagecreatetruecolor(2400, 1600), "vacanta.jpg");
file_put_contents("virus.jpg", "<?php echo 'nu sunt o imagine';");
foreach (["vacanta.jpg", "virus.jpg"] as $fisier) {
$info = getimagesize($fisier);
if ($info === false) {
echo "$fisier: nu este o imagine\n";
} elseif ($info[0] > 2000) {
echo "$fisier: prea mare ({$info[0]} px lățime, maximum 2000)\n";
} else {
echo "$fisier: acceptat\n";
}
}
Rezultat
vacanta.jpg: prea mare (2400 px lățime, maximum 2000)
virus.jpg: nu este o imagine
Greșeli frecvente
- Te bazezi doar pe
getimagesizeca protecție la încărcarea fișierelor. Un fișier poate avea antet de imagine și cod PHP ascuns în el. Salvează fișierele cu nume generat de tine, cu extensie impusă, într-un director în care PHP nu rulează. - Folosești
getimagesizepe un URL extern la fiecare afișare. Funcția descarcă imaginea de fiecare dată și încetinește pagina. Salvează dimensiunile o singură dată.
Comenzi înrudite
file_get_contents: Citește tot conținutul unui fișier (sau al unei adrese URL) într-un text.base64_encode / base64_decode: Transformă orice date (inclusiv binare) într-un text format doar din litere, cifre, +, / și =.uniqid: Generează un identificator bazat pe ora curentă, în microsecunde. Unic în practică, dar previzibil.