Руководство по PHP
Пред. |  | След.

# LXIII. Image Functions

# Введение

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.

With the exif extension, 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. The exif functions do not require the GD library.

> Замечание: Read the requirements section about how to expand image capabilities to read, write and modify images. To read meta data of pictures taken by digital cameras you need the above mentioned exif extension.

# Требования

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 and less than gd-2.0.28 support PNG, not GIF. GIF support was re-enabled in gd-2.0.28.

> Замечание: 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 its codebase is better maintained and more stable.

> Замечание: Support for GD 1.x has been removed as of PHP 6.0.0, which requires GD 2.0.33 or later.

You may wish to enhance GD to handle more image formats.

Таблица 1. Supported image formats

Image format | Library to download | Notes
--- | --- | ---
`gif` |  | Only supported in GD versions older than gd-1.6 and newer than gd-2.0.28. Read-only GIF support is available with PHP 4.3.0 and the bundled GD-library. Write support is available since PHP 4.3.9 and PHP 5.0.1.
`jpeg-6b` | ftp://ftp.uu.net/graphics/jpeg/ |
`png` | http://www.libpng.org/pub/png/libpng.html | Only supported in GD versions greater than gd-1.6.
`xpm` | ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | It's likely you have this library already available, if your system has an installed X-Environment.

You may wish to enhance GD to deal with different fonts. The following font libraries are supported:

Таблица 2. Supported font libraries

Font library | Download | Notes
--- | --- | ---
`FreeType 1.x` | http://www.freetype.org/ | Support removed as of PHP 6.0.0
`FreeType 2` | http://www.freetype.org/ |
`T1lib` | ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | Support for Postscript Type 1 fonts.

# Установка

To enable GD-support configure PHP `--with-gd[=DIR]`, where DIR is the GD base install directory. To use the recommended bundled version of the GD library (which was first bundled in PHP 4.3.0), use the configure option `--with-gd`. GD library requires libpng and libjpeg to compile.

In Windows, you'll include the GD2 DLL `php_gd2.dll` as an extension in `php.ini`. The GD1 DLL `php_gd.dll` was removed in PHP 4.3.2. Also note that the preferred truecolor image functions, such as imagecreatetruecolor(), require GD2.

To disable GD support in PHP 3 add `--without-gd` to your configure line.

Enhance the capabilities of GD to handle more image formats by specifying the `--with-XXXX` configure switch to your PHP configure line.

Таблица 3. Supported image formats

Image Format | Configure Switch
--- | ---
`jpeg-6b` | To enable support for jpeg-6b add `--with-jpeg-dir=DIR`.
`png` | To enable support for png add `--with-png-dir=DIR`. Note, libpng requires the zlib library, therefore add `--with-zlib-dir[=DIR]` to your configure line.
`xpm` | To enable support for xpm add `--with-xpm-dir=DIR`. If configure is not able to find the required libraries, you may add the path to your X11 libraries.

> Замечание: When compiling PHP with libpng, you must use the same version that was linked with the GD library.

Enhance the capabilities of GD to deal with different fonts by specifying the `--with-XXXX` configure switch to your PHP configure line.

Таблица 4. Supported font libraries

Font library | Configure Switch
--- | ---
`FreeType 1.x` | To enable support for FreeType 1.x add `--with-ttf[=DIR]`.
`FreeType 2` | To enable support for FreeType 2 add `--with-freetype-dir=DIR`.
`T1lib` | To enable support for T1lib (Postscript Type 1 fonts) add `--with-t1lib[=DIR]`.
`Native TrueType string function` | To enable support for native TrueType string function add `--enable-gd-native-ttf`.

# Настройка во время выполнения

There are no image specific configurations but you may be interested in the exif extension directives.

# Типы ресурсов

Данное расширение не определяет никакие типы ресурсов.

# Предопределенные константы

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если 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_WBMP` (integer)

`IMAGETYPE_XBM` (integer)

`IMAGETYPE_TIFF_II` (integer)

`IMAGETYPE_TIFF_MM` (integer)

`IMAGETYPE_IFF` (integer)

`IMAGETYPE_JB2` (integer)

`IMAGETYPE_JPC` (integer)

`IMAGETYPE_JP2` (integer)

`IMAGETYPE_JPX` (integer)

`IMAGETYPE_SWC` (integer)

`PNG_NO_FILTER` (integer)

`PNG_FILTER_NONE` (integer)

`PNG_FILTER_SUB` (integer)

`PNG_FILTER_UP` (integer)

`PNG_FILTER_AVG` (integer)

`PNG_FILTER_PAETH` (integer)

`PNG_ALL_FILTERS` (integer)

# Примеры

Пример 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=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.

Пред. | Начало | След.
iis_stop_service | Уровень выше | gd_info