php-doc-en/reference/image/reference.xml
Friedhelm Betz 1a7ccd2490 move exif info to intro, rewording
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@221173 c90b9560-bf6c-de11-be94-00142212c4b1
2006-10-05 10:53:33 +00:00

231 lines
7.2 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.28 $ -->
<!-- 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>
With the <link linkend="ref.exif">exif extension</link>, 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. The exif
functions do not require the <acronym>GD</acronym> library.
</para>
<para>
<note>
<simpara>
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
<link linkend="ref.exif">exif extension</link>.
</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 Postscript Type 1 fonts.
</entry>
</row>
</tbody>
</tgroup>
</table>
</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: &lt;img
src=&quot;button.php?text=text&quot;&gt;. The above button.php script
then takes this &quot;text&quot; string and overlays it on top of a
base image which in this case is &quot;images/button1.png&quot;
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
-->