Παραπομπή Συναρτήσεων
PHP Manual

Image συναρτήσεις

Εισαγωγή

H PHP δεν περιορίζεται μόνο στη δημιουργία ενός HTML output. Μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία και διαχείρηση αρχείων εικόνας ποικίλων τύπων, συμπεριλαμβανομένων των gif, png, jpg, wbmp, και xpm. Ακόμα πιο βολικό είναι το γεγονός ότι η PHP μπορεί να στείλει stream εικόνων κατευθείαν σε έναν browser. Θα πρέπει να κάνετε compile την PHP με τη βιβλιοθήκη GD, των συναρτήσεων εικόνας, για να λειτουργήσει με αυτόν των τρόπο. Οι GD και PHP μπορεί να χρειαστούν και άλλες βιβλιοθήκες, πράγμα που εξαρτάται από το ποιους τύπους εικόνας έχεται επιλέξει να ασχοληθείτε.

Μπορείτε να χρησιμοποιείσετε αυτές τις συναρτήσεις, στην PHP, για να πάρετε το μέγεθος των JPEG, GIF, PNG, SWF, TIFF και JPEG2000 εικόνων.

Note: Διαβάστε το τμήμα που αναφέρεται στις απαιτήσεις, για πληροφορίες σχετικά με το πώς μπορείτε να αυξήσεται τη δυνατότητα ανάγνωσης, γραφής και τροποποίησης εικόνων, καθώς επίσης και της ανάγνωσης των meta data των εικόνων που λαμβάνονται από ψηφιακές cameras.

Απαιτήσεις

Εάν έχετε τη βιβλιοθήκη GD (διαθέσιμη στο » http://www.libgd.org/) θα είστε, επίσης, σε θέση να δημιουργείσετε και να διαχειριστείτε εικόνες.

Ο τύπος των εικόνων που μπορείτε να διαχειριστείτε, εξαρτάται από την έκδοση της GD που είναι εγκατεστημένη, και από οποιαδήποτε άλλη βιβλιοθήκη μπορεί να χρειστεί η GD για να προσπελάσει τον απαιτούμενο τύπο. Οι παλιότερες της gd-1.6 εκδόσεις της GD, υποστηρίζουν εικόνες τύπου GIF, ενώ δεν υποστηρίζουν τις PNG, ενώ οι εκδόσεις μετά την gd-1.6 υποστηρίζουν τον PNG τύπο, αλλά όχι τον GIF.

Note: Από την έκδοση 4.3 της PHP υπάρχει μαζί με το πακέτο μία έκδοση της βιβλιοθήκης GD. Αυτή έχει κάποια επιπλέον χαρακτηριστικά, όπως το alpha blending και θα πρέπει να χρησιμοποιείται αυτή, κατά προτίμηση, μιας και η codebase της είναι καλύτερα διατηρημένη και πιο σταθερή.

Μπορεί να επιθυμείτε την GD να διαχειρίζεται περισσότερους τύπους εικόνων.

Υποστηριζόμενοι τύποι εικόνων
Τύπος εικόνας Βιβλιοθήκη που πρέπει να κάνετε download Σημειώσεις
gif   Υποστηρίζεται σε εκδόσεις μεγαλύτερες της gd-1.6. Read-only GIF υποστήριξη είναι διαθέσιμη στην έκδοση 4.3.0 της PHP 4.3.0 και τη συνημμένη GD βιβλιοθήκη.
jpeg-6b » ftp://ftp.uu.net/graphics/jpeg/  
png » http://www.libpng.org/pub/png/libpng.html Υποστηρίζεται σε εκδόσεις της GD που είναι μεγαλύτερες της gd-1.6.
xpm » ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html Είναι πιθανόν να έχετε ήδη εγκατεστημένη αυτή τη βιβλιοθήκη εάν έχετε ένα X-Environment.

Μπορεί να επιθυμείτε την GD να χειρίζεται διάφορες γραμματοσειρές. Ακολουθούν οι υποστηριζόμενες βιβλιοθήκες γραμματοσειρών:

Υποστηριζόμενες βιβλιοθήκες γραμματοσειρών
Βιβλιοθήκη γραμματοσειρών Download Σημειώσεις
FreeType 1.x » http://www.freetype.org/  
FreeType 2 » http://www.freetype.org/  
T1lib » ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) Υποστήρικη για Type 1 fonts.

Εάν έχεται κάνει compile την PHP με --enable-exif είστε σε θέση να εργαστείτε με τις πληροφορίες που βρίσκονται στα headers των JPEG και TIFF εικόνων. Με αυτόν τον τρόπο μπορεί να γίνει ανάγνωση των meta data, που όπως αναφέρθηκε και ποηγουμένως παράγονται από τις ψηφιακές cameras. Αυτές οι συναρτήσεις δεν απαιτούν τη βιβλιοθήκη GD.

Note: Η PHP δεν απαιτεί κάποια επιπλέον βιβλιοθήκη για το exif module.

Εγκατάσταση

Για να έχετε GD υποστήριξη, πρέπει να κάνετε configure την PHP με την επιλογή --with-gd[=DIR], όπου DIR είναι το όνομα του καταλόγου εγκατάστασης της. Για να χρησιμοποείσετε την προτινόμενη, συνημμένη, έκδοση της GD βιβλιοθήκης (που πρωτοβγήκε με την PHP 4.3.0), χρησιμοποιείστε την επιλογή --with-gd. Στα Windows, θα πρέπει να συμπεριλάβετε το GD2 DLL php_gd2.dll ως extension στο php.ini. Το GD1 DLL php_gd.dll αφαιρέθηκε στην έκδοση 4.3.2 της PHP. Επίσης πρόσεξτε ότι οι προτιμόμενες truecolor image συναρτήσεις, όπως είναι η imagecreatetruecolor(), απαιτούν GD2.

Για να κάνετε disable την GD υποστήριξη στην PHP 3, προσθέστε την επιλογή --without-gd στο configure line σας.

Μπορείτε να αυξήσετε τις δυνατότητες της GD, ώστε να χειρίζεται περισσότερους τύπους εικόνων, με το να καθορίσετε τον configure switch --with-XXXX, στο PHP configure line σας.

Υποστηριζόμενοι τύποι εικόνας
Τύπος εικόνας Configure Switch
jpeg-6b Για να αποκτήσετε υποστήριξη για τον jpeg-6b, προσθέστε την --with-jpeg-dir=DIR.
png Για να αποκτήσετε υποστήριξη για τον png, προσθέστε την --with-png-dir=DIR. Προσέξτε ότι η libpng απαιτεί την zlib library, για αυτό το λόγο προσθέστε την επιλογή --with-zlib-dir[=DIR] στο configure line σας.
xpm Για να αποκτήσετε υποστήριξη για τον xpm, προσθέστε την --with-xpm-dir=DIR. Εάν η διαχείριση δεν μπορεί να εντοπίσει τις απαιτούμενες βιβλιοθήκες, μπορείτε να προσθέσετε το path για τις X11 βιβλιοθήκες σας.

Για να επεκτείνετε τις δυνατότητες της GD, ώστε να χειρίζεται διάφορες γραμματοσειρές, προσδιορίστε τον configure switch --with-XXXX, στο PHP onfigure line σας.

Υποστηριζόμενες βιβλιοθήκες γραμματοσειρών
Βιβλιοθήκη γραμματοσειρών Configure Switch
FreeType 1.x Για να αποκτείσετε υποστήριξη για τη FreeType 1.x, προσθέστε την --with-ttf[=DIR].
FreeType 2 Για να αποκτείσετε υποστήριξη για τη FreeType 2, προσθέστε την --with-freetype-dir=DIR.
T1lib Για να αποκτείσετε υποστήριξη για τη T1lib (Type 1 fonts), προσθέστε την --with-t1lib[=DIR].
Native TrueType string συνάρτηση Για να αποκτείσετε υποστήριξη για τη native TrueType string συνάρτηση, προσθέστε την --enable-gd-native-ttf.

Ρυθμίσεις κατά την εκτέλεση

Η συμπεριφορά αυτών των συναρτήσεων επιρεάζεται από τις ρυθμίσεις στο php.ini.

H exif υποστηρίζει την αυτόματη μετατροπή για Unicode και JIS κωδικοποιήσεις χαρακτήρων των σχολίων του χρήστη, όταν το module mbstring είναι διαθέσιμο. Αυτό γίνεται με την αποκωδικοποίηση, σε πρώτη φάση, του σχολίου χρησιμοποιώντας το καθορισμένο σύνολο χαρακτήρων. Μετά από αυτό, το αποτέλεσμα κωδικοποιείται με ένα άλλο σύνολο χαρακτήρων το οποίο ταιριάζει με το HTTP output.

Επιλογές διαχείρισης του exif
Όνομα Προκαθοριμένη τιμή Υποκείμενη σε αλλαγή
exif.encode_unicode "ISO-8859-15" PHP_INI_ALL
exif.decode_unicode_motorola "UCS-2BE" PHP_INI_ALL
exif.decode_unicode_intel "UCS-2LE" PHP_INI_ALL
exif.encode_jis "" PHP_INI_ALL
exif.decode_jis_motorola "JIS" PHP_INI_ALL
exif.decode_jis_intel "JIS" PHP_INI_ALL
Για περισσότερες πληροφορίες και ορισμούς των constants του PHP_INI_* ανατρέξτε στη συνάρτηση ini_set().

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

exif.encode_unicode string

Η exif.encode_unicode καθορίζει το σύνολο χαρακτήρων με το οποίο θα διαχειριστούν τα UNICODE σχόλια του χρήστη. Αυτό αντιστοιχεί στο ISO-8859-15, που λειτουργεί κανονικά για τις περισσότερες μη-ασιατικές χώρες. Η ρύθμιση μπορεί να είναι κενή ή να περιέχει μία κωδικοποίηση που να υποστηρίζεται από το mbstring. Εάν είναι κενή, χρησιμοποιείται η τρέχουσα εσωτερική κωδικοποίηση του mbstring.

exif.decode_unicode_motorola string

Η exif.decode_unicode_motorola καθορίζει το εσωτερικό σύνολο χαρακτήρων εικόνας, για σχόλια χρήστη με Unicode κωδικοποίηση, όταν η εικόνα είναι σε motorola byte order (big-endian). Αυτή η ρύθμιση δεν μπορεί να είναι κενή, αλλά μπορείτε να καθορίσετε μία λίστα από κωδικοποιήσεις που θα υποστηρίζονται από το mbstring. Η προκαθορισμένη είναι η UCS-2BE.

exif.decode_unicode_intel string

Η exif.decode_unicode_intel καθορίζει το εσωτερικό σύνολο χαρακτήρων εικόνας, για σχόλια χρήστη με Unicode κωδικοποίηση, όταν η εικόνα είναι σε intel byte order (little-endian). Αυτή η ρύθμιση δεν μπορεί να είναι κενή, αλλά μπορείτε να καθορίσετε μία λίστα από κωδικοποιήσεις που θα υποστηρίζονται από το mbstring. Η προκαθορισμένη είναι η UCS-2BE.

exif.encode_jis string

Η exif.encode_jis καθορίζει το σύνολο χαρακτήρων βάσει του οποίου διαχειρίζονατι τα JIS σχόλια χρήστη. Αυτή καθορίζεται να έχει μία κενή τιμή, η οποία αναγκάζει τις συναρτήσεις να χρησιμοποιούν την τρέχουσα εσωτερική κωδικοποίηση του mbstring.

exif.decode_jis_motorola string

Η exif.decode_jis_motorola καθορίζει το εσωτερικό σύνολο χαρακτήρων εικόνας για σχόλια χρήστη με JIS κωδικοποίηση, όταν η εικόνα είναι σε motorola byte order (big-endian). Αυτή η ρύθμιση δεν μπορεί να είναι κενή, αλλά μπορείτε να καθορίσετε μία λίστα από κωδικοποιήσεις που θα υποστηρίζονται από το mbstring H προκαθορισμένη είναι η JIS.

exif.decode_jis_intel string

Η exif.decode_jis_intel καθορίζει το εσωτερικό σύνολο χαρακτήρων εικόνας για σχόλια χρήστη με Unicode κωδικοποίηση, όταν η εικόνα είναι σε intel byte order (little-endian). Αυτή η ρύθμιση δεν μπορεί να είναι κενή, αλλά μπορείτε να καθορίσετε μία λίστα από κωδικοποιήσεις που θα υποστηρίζονται από το mbstring. H προκαθορισμένη είναι η JIS.

Τύποι Πόρων

Αυτή η επέκταση δεν έχει resource τύπους ορισμένους.

Προκαθορισμένες Σταθερές

Οι σταθερές παρακάτω ορίζονται από αυτή την επέκταση, και θα είναι διαθέσιμες μόνο αν η επέκταση έχει γίνει compile μέσα στην PHP ή έχει φορτωθεί δυναμικά κατά την εκτέλεση.

IMG_GIF (integer)
IMG_JPG (integer)
IMG_JPEG (integer)
IMG_PNG (integer)
IMG_WBMP (integer)
IMG_XPM (integer)
IMG_COLOR_TILED (integer)
IMG_COLOR_STYLED (integer)
IMG_COLOR_BRUSHED (integer)
IMG_COLOR_STYLEDBRUSHED (integer)
IMG_COLOR_TRANSPARENT (integer)
IMG_ARC_ROUNDED (integer)
IMG_ARC_PIE (integer)
IMG_ARC_CHORD (integer)
IMG_ARC_NOFILL (integer)
IMG_ARC_EDGED (integer)
IMAGETYPE_GIF (integer)
IMAGETYPE_JPEG (integer)
IMAGETYPE_PNG (integer)
IMAGETYPE_SWF (integer)
IMAGETYPE_PSD (integer)
IMAGETYPE_BMP (integer)
IMAGETYPE_TIFF_II (integer)
IMAGETYPE_TIFF_MM (integer)
IMAGETYPE_JPC (integer)
IMAGETYPE_JP2 (integer)
IMAGETYPE_JPX (integer)
IMAGETYPE_SWC (integer)

Παραδείγματα

Example#1 Δημιουργία PNG με την PHP

<?php
    header
("Content-type: image/png");
    
$string $_GET['text'];
    
$im     imagecreatefrompng("images/button1.png");
    
$orange imagecolorallocate($im22021060);
    
$px     = (imagesx($im) - 7.5 strlen($string)) / 2;
    
imagestring($im3$px9$string$orange);
    
imagepng($im);
    
imagedestroy($im);
?>
Αυτό το παράδειγμα θα καλούνταν από μία σελίδα με ένα tag όπως: <img src="button.php?text">. Εν συνεχεία, το παραπάνω button.php script παίρνει το "text" string και το τοποθετεί στην κορυφή μιας base εικόνας, η οποία είναι σε αυτήν την περίπτωση η "images/button1.png", και παράγει στην έξοδο την τελική εικόνα. Αυτός είναι ένας αρκετά βολικός τρόπος για να αποφύγετε τη σχεδίαση νέων button εικόνων κάθε φορά που χρειάζεται να αλλάξετε το κείμενο. Με αυτή τη μέθοδο παράγονται δυναμικά.

Table of Contents


Παραπομπή Συναρτήσεων
PHP Manual