<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
 
<book xml:id="book.image" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 <?phpdoc extension-membership="bundled" ?>
 <title>Image Processing and GD</title>
 <titleabbrev>GD</titleabbrev>
 
 <!-- {{{ preface -->
 <preface xml:id="intro.image">
  &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 <acronym>GIF</acronym>, <acronym>PNG</acronym>,
   <acronym>JPEG</acronym>, <acronym>WBMP</acronym>, and <acronym>XPM</acronym>.
   Even more conveniently, PHP can output image streams directly to a browser. You
   will need to compile PHP with the <acronym>GD</acronym> library of image
   functions for this to work. <acronym>GD</acronym> 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>
   <note>
    <simpara>
      The <function>getimagesize</function> function does not require the GD extension.
    </simpara>
   </note>
   <caution>
    <simpara>
     While the bundled version of the GD library uses the Zend memory manager to
     allocate memory, system versions do not, so that <link
     linkend="ini.memory-limit">memory_limit</link> does not apply. 
    </simpara>
   </caution>
  </para>

  <para>
   GD supports a varity of formats, below is a list of formats supported by GD and notes 
   to their availability including read/write support.
  </para>
  <para>
   <table>
    <title>Formats supported by GD</title>
    <tgroup cols="4">
     <thead>
      <row>
       <entry>Format</entry>
       <entry>Read support</entry>
       <entry>Write support</entry>
       <entry>Notes</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>JPEG</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>PNG</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>GIF</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>XBM</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>XPM</entry>
       <entry>&true;</entry>
       <entry>&false;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>WBMP</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>WebP</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry></entry>
      </row>
      <row>
       <entry>BMP</entry>
       <entry>&true;</entry>
       <entry>&true;</entry>
       <entry>Available as of PHP 7.2.0</entry>
      </row>
     </tbody>
    </tgroup>
   </table>
  </para>
  <para>
   Despite most formats being available for both reading and writing in the above table, doesn't 
   mean that PHP was compiled with support for them. To find out which formats that was available 
   to GD during compilation, use the <function>gd_info</function> function, for more information 
   about compiling support for one or more formats, see the installation chapter.
  </para>
 </preface>

 <!-- }}} -->
 
 &reference.image.setup;
 &reference.image.constants;
 &reference.image.examples;
 &reference.image.reference;
 &reference.image.gdimage;
 &reference.image.gdfont;

</book>

<!-- 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:"~/.phpdoc/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
-->

