Forum und email

getimagesize

(PHP 4, PHP 5)

getimagesize — Ανακτείστε το μέγεθος μίας εικόνας

Περιγραφή

array getimagesize ( string $filename [, array $imageinfo ] )

Η συνάρτηση getimagesize() υπολογίζει το μέγεθος οποιουδήποτε αρχείου εικόνας τύπου GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP ή IFF και επιστρέφει τις διαστάσεις του, μαζί με τον τύπο αρχείου και ένα height/width text string, που θα χρησιμοποιηθεί σε ένα συνηθισμένο HTML IMG tag.

Επιστρέφει ένα array 4 στοιχείων. Ο δείκτης 0 περιέχει το πλάτος της εικόνας σε pixels, ενώ ο δείκτης 1 το ύψος. Ο δείκτης 2 είναι ένα flag που δείχνει τον τύπο της εικόνας: 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF. Αυτές οι τιμές ανταποκρίνονται στις σταθερές IMAGETYPE που προστέθηκαν στην έκδοση 4.3 της PHP. Ο δείκτης 3 είναι ένα text string με το κατάλληλο height="yyy" width="xxx" string, το οποίο μπορεί να χρησιμοποιηθεί απ' ευθείας σε ένα IMG tag.

Example#1 getimagesize (αρχείο)

<?php
$size 
getimagesize ("img/flag.jpg");
echo 
"<img src=\"img/flag.jpg\" {$size[3]}>";
?>

Example#2 getimagesize (URL)

<?php $size getimagesize ("https://www.example.com/gifs/logo.gif"); ?>

Όταν έχουμε JPG εικόνες, επιστρέφονται δύο επιπλέον δείκτες: Οι channels και bits. Ο channels τίθεται 3 για RGB εικόνες και 4 για CMYK εικόνες. Ο bits είναι ο αριθμός των bits για κάθε χρώμα.

Από την PHP 4.3, οι bits και channels υπάρχουν και για άλλους τύπους εικόνας. Παρ' όλα αυτά, η παρουσία αυτών των τιμών μπορεί να προκαλέσει σύγχυση. Ως παράδειγμα αναφέρεται το ακόλουθο: ο τύπος GIF χρησιμοποιεί πάντα 3 channels ανά pixel, αλλά ο αριθμός των bits ανά pixel δεν μπορεί να υπολογιστεί για ένα animated GIF με ένα global color table.

Μερικοί τύποι μπορεί να μην περιέχουν εικόνες ή ακόμα να περιέχουν πολλαπλές εικόνες. Σε αυτές τις περιπτώσεις, η getimagesize() μπορεί να μην είναι σε θέση να υπολογίσει σωστά το μέγεθος της εικόνας. Έτσι η getimagesize() θα επιστρέψει μηδέν για το πλάτος και το ύψος.

Beginning with PHP 4.3, getimagesize() also returns an additional parameter, mime, that corresponds with the MIME type of the image. This information can be used to deliver images with correct HTTP Content-type headers:

Example#3 getimagesize() και MIME τύποι

<?php
$size 
getimagesize ($filename);
$fp=fopen($filename"rb");
if (
$size && $fp) {
  
header("Content-type: {$size['mime']}");
  
fpassthru($fp);
  exit;
} else {
  
// error
}
?>

Εάν η προσπέλαση της εικόνας filename είναι αδύνατη, ή εάν η εικόνα δεν είναι έγκυρη, η getimagesize() θα επιστρέψει την τιμή FALSE και θα παράξει ένα μήνυμα λάθους.

Η προαιρετική παράμετρος imageinfo σας επιτρέπει να αποσπάτε κάποιες επιπλέον πληροφορίες από το αρχείο εικόνας. Προς το παρόν, αυτή επιστρέφει τους διάφορους JPG APP markers ως ένα associative array. Μερικά προγράμματα χρησιμοποιούν τους APP markers σε συνημμένες text πληροφορίες σε εικόνες. Είναι πολύ συνηθισμένη, επίσης, η χρήση σε συνημμένες IPTC » https://www.iptc.org/ πληροφορίες σε APP13 marker. Μπορείτε να χρησιμοποιείσετε τη συνάρτηση iptcparse() για να κάνετε parse το binary APP13 marker σε κάποια αναγνώσιμη μορφή.

Example#4 Η getimagesize() να επιστρέφει IPTC

<?php
$size = getimagesize ("testimg.jpg",&$info);
if (isset ($info["APP13"])) {
    $iptc = iptcparse ($info["APP13"]);
    var_dump ($iptc);
}
?>

Note: Η υποστήριξη για TIFF προστέθηκε στην PHP 4.2. Η συνάρτηση αυτή δεν χρειάζεται την GD image library. Ανατρέξτε επίσης στις: image_type_to_mime_type(), exif_imagetype(), exif_read_data() και exif_thumbnail(). Η υποστήριξη για URL προστέθηκε στην έκδοση 4.0.5 της PHP.