1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.27 $ -->
<!-- Purpose: utilspec.image -->
<!-- Membership: bundled -->
<reference id="ref.image">
<title>Image Functions</title>
<titleabbrev>Image</titleabbrev>
<partintro>
<section id="image.intro">
&reftitle.intro;
<para>
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.
</para>
<para>
You can use the image functions in PHP to get the size of
<acronym>JPEG</acronym>, <acronym>GIF</acronym>,
<acronym>PNG</acronym>, <acronym>SWF</acronym>,
<acronym>TIFF</acronym> and <acronym>JPEG2000</acronym> images.
</para>
<para>
<note>
<simpara>
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.
</simpara>
</note>
</para>
</section>
<section id="image.requirements">
&reftitle.required;
<para>
If you have the <acronym>GD</acronym> library (available at <ulink
url="&url.gd;">&url.gd;</ulink>) you will also be able to create
and manipulate images.
</para>
<para>
The format of images you are able to manipulate depend on the
version of <acronym>GD</acronym> you install, and any other libraries
<acronym>GD</acronym> might need to access those image formats.
Versions of <acronym>GD</acronym> 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.
<note>
<simpara>
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.
</simpara>
</note>
</para>
<note>
<para>
Support for GD 1.x has been removed as of PHP 6.0.0, which requires GD
2.0.33 or later.
</para>
</note>
<para>
You may wish to enhance GD to handle more image formats.
<table>
<title>Supported image formats</title>
<tgroup cols="3">
<thead>
<row>
<entry>Image format</entry>
<entry>Library to download</entry>
<entry>Notes</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>gif</literal></entry>
<entry></entry>
<entry>
Only supported in GD versions older than gd-1.6 and newer than
gd-2.0.28. <emphasis>Read-only
</emphasis> GIF support is available with PHP 4.3.0 and the bundled
GD-library. <emphasis>Write</emphasis> support is avaliable since
PHP 4.3.9 and PHP 5.0.1.
</entry>
</row>
<row>
<entry><literal>jpeg-6b</literal></entry>
<entry><ulink url="&url.jpeg;">&url.jpeg;</ulink></entry>
<entry></entry>
</row>
<row>
<entry><literal>png</literal></entry>
<entry><ulink url="&url.libpng;">&url.libpng;</ulink></entry>
<entry>
Only supported in GD versions greater than gd-1.6.
</entry>
</row>
<row>
<entry><literal>xpm</literal></entry>
<entry><ulink url="&url.libxpm;">&url.libxpm;</ulink></entry>
<entry>
It's likely you have this library already available, if your system
has an installed X-Environment.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
You may wish to enhance GD to deal with different fonts. The following
font libraries are supported:
<table>
<title>Supported font libraries</title>
<tgroup cols="3">
<thead>
<row>
<entry>Font library</entry>
<entry>Download</entry>
<entry>Notes</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>FreeType 1.x</literal></entry>
<entry><ulink url="&url.freetype;">&url.freetype;</ulink></entry>
<entry>Support removed as of PHP 6.0.0</entry>
</row>
<row>
<entry><literal>FreeType 2</literal></entry>
<entry><ulink url="&url.freetype;">&url.freetype;</ulink></entry>
<entry></entry>
</row>
<row>
<entry><literal>T1lib</literal></entry>
<entry><ulink url="&url.t1lib;">&url.t1lib;</ulink>)</entry>
<entry>
Support for Type 1 fonts.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
If you have PHP compiled with <option role="configure">--enable-exif</option>
you are able to work with information stored in headers of
<acronym>JPEG</acronym> and <acronym>TIFF</acronym> images. This way you can
read meta data generated by digital cameras as mentioned above. These
functions do not require the <acronym>GD</acronym> library.
</para>
</section>
&reference.image.configure;
&reference.image.ini;
<section id="image.resources">
&reftitle.resources;
&no.resource;
</section>
&reference.image.constants;
<section id="image.examples">
&reftitle.examples;
<para>
<example>
<title>PNG creation with PHP</title>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
</example>
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.
</para>
</section>
</partintro>
&reference.image.functions;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|