Úvod
PHP is not limited to creating just HTML output. It can also be
used to create and manipulate image files in a variety of different
image formats, including gif, png, jpg, wbmp, and xpm. Even more
convenient, PHP can output image streams directly to a browser. You
will need to compile PHP with the GD library of image functions for
this to work. GD and PHP may also require other libraries, depending
on which image formats you want to work with.
You can use the image functions in PHP to get the size of
JPEG, GIF,
PNG, SWF,
TIFF and JPEG2000 images.
Poznámka:
Read requirements section about how to expand image capabilities
to read, write and modify images and to read meta data of pictures
taken by digital cameras.
Požadavky
If you have the GD library (available at http://www.boutell.com/gd/) you will also be able to create
and manipulate images.
The format of images you are able to manipulate depend on the
version of GD you install, and any other libraries
GD might need to access those image formats.
Versions of GD older than gd-1.6
support gif format images, and do not support png, where versions
greater than gd-1.6 support png, not gif.
Poznámka:
Since PHP 4.3 there is a bundled version of the GD lib. This bundled
version has some additional features like alpha blending and should
be used in preference to the external library since it's codebase is
better maintained and more stable.
If you have PHP compiled with --enable-exif
you are able to work with information stored in headers of
JPEG and TIFF images. This way you can
read meta data generated by digital cameras as mentioned above. These
functions does not require the GD library.
Poznámka:
PHP does not require any additional library for exif the module.
Instalace
In order to read and write images in jpeg format, you will need to
obtain and install jpeg-6b (available at
ftp://ftp.uu.net/graphics/jpeg/), and then recompile
GD to make use of jpeg-6b. You will also have to
compile PHP with
--with-jpeg-dir=/path/to/jpeg-6b.
To add support for Type 1 fonts, you can install t1lib (available
at ftp://sunsite.unc.edu/pub/Linux/libs/graphics/), and then add
--with-t1lib[=dir].
Konfigurace běhu
Chování těchto funkcí je ovlivněno nastavením parametrů v php.ini.
Exif supports automatically conversion for Unicode and JIS
character encodings of user comments when module
mbstring
is available. This is done by first decoding the comment
using the specified characterset. The result is then encoded
with another characterset which should match your
HTTP output.
Tabulka 1. Exif configuration options
| Name | Default | Changeable |
|---|
| 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 |
For further details and definition of the PHP_INI_* constants see
ini_set().
Here is a short explanation of the configuration directives.
- exif.encode_unicode
string
exif.encode_unicode defines the
characterset UNICODE user comments are handled.
This defaults to ISO-8859-15 which should work for
most non asian countries. The setting can be empty
or must be an encoding supported by mbstring. If it
is empty the current internal encoding of mbstring is
used.
- exif.decode_unicode_motorola
string
exif.decode_unicode_motorola defines
the image internal characterset for Unicode encoded user
comments if image is in motorola byte order (big-endian).
This setting cannot be empty but you can specify a list
of encodings supported by mbstring. The default is UCS-2BE.
- exif.decode_unicode_intel
string
exif.decode_unicode_intel defines
the image internal characterset for Unicode encoded user
comments if image is in intel byte order (little-endian).
This setting cannot be empty but you can specify a list
of encodings supported by mbstring. The default is UCS-2LE.
- exif.encode_jis
string
exif.encode_jis defines the
characterset JIS user comments are handled.
This defaults to an empty value which forces
the functions to use the current internal encoding
of mbstring.
- exif.decode_jis_motorola
string
exif.decode_jis_motorola defines
the image internal characterset for JIS encoded user
comments if image is in motorola byte order (big-endian).
This setting cannot be empty but you can specify a list
of encodings supported by mbstring. The default is JIS.
- exif.decode_jis_intel
string
exif.decode_jis_intel defines
the image internal characterset for JIS encoded user
comments if image is in intel byte order (little-endian).
This setting cannot be empty but you can specify a list
of encodings supported by mbstring. The default is JIS.
Typy prostředků
Toto rozšíření nemá definován žádný typ prostředku
(resource).
Předdefinované konstanty
Tyto konstanty jsou definovány tímto rozšířením a budou k dispozici pouze
tehdy, bylo-li rozšíření zkompilováno společně s PHP nebo dynamicky zavedeno
za běhu.
Příklady
Příklad 1. PNG creation with PHP <?php
header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
?> |
|
This example would be called from a page with a tag like: <img
src="button.php?text">. The above button.php script
then takes this "text" string and overlays it on top of a
base image which in this case is "images/button1.png"
and outputs the resulting image. This is a very convenient way to
avoid having to draw new button images every time you want to
change the text of a button. With this method they are
dynamically generated.