Page 545 - Beginning PHP 5.3
P. 545
17
Generating Images
with PHP
The ability to create HTML pages dynamically using PHP lets you do some pretty clever stuff, as
you ’ ve seen in previous chapters. However, there are some tasks that HTML isn ’ t suited for, such
as displaying graphical information. Furthermore, because images are commonly used on the Web,
there ’ s often a need to manipulate image files — for example, to resize them or add text to them.
Fortunately, PHP contains a range of functions that enable you to create, open, manipulate, and
output images — both to the Web browser and to disk. In the course of this chapter you see how
these functions work and how you can use them to create dynamic graphics for your pages. In this
chapter you:
❑ Explore some of the basic concepts that you need to understand before you create images,
such as color theory and how image coordinate systems work in PHP
❑ Learn to use PHP ’ s drawing tools to build your own images from scratch, drawing lines,
curves, and other shapes on your images
❑ See how to work with existing images, such as applying watermarks to images, creating
thumbnails, and adding text
The image functions that PHP uses are based on the GD image library that is developed by Tom
Boutell ( www.boutell.com ). The code for the GD library is bundled with the PHP installation and
includes some enhancements to the original code. With the version of GD included in PHP you can
do things like draw lines, ellipses, and rectangles; fill areas of an image; create text within images;
and read and write JPEG, PNG, WBMP, XBM, and GIF image files. This allows you to create and
manipulate really quite complex images using PHP scripts, as you see in this chapter.
Basics of Computer Graphics
Before creating images in PHP, you need to understand some basic image - related concepts. The
following sections explain color theory and the RGB color model; examine how image coordinates
work; and talk a little bit about different image types.
9/21/09 2:48:34 PM
c17.indd 507 9/21/09 2:48:34 PM
c17.indd 507