Dynamically create images
After installing some third-party function libraries and combining your graphics processing skills, you can create and process images with PHP. In fact, you don't need too advanced knowledge of geometry. I always failed this class in middle school, and I still know how to create images in PHP now!
Before using basic image creation functions, you need to install the GD library. If you want to use JPEG-related image creation functions, you also need to install jpeg-6b. When using Type 1 fonts in images, t1lib must also be installed.
Here, you need to make further adjustments to your system. First, you must install t1lib to provide image processing support, followed by jpeg-6b. The third step is to install the GD function library. You have to complete these three tasks in order. The reason is that you need to compile the GD library to use the jpeg-6b library. If jpeg-6b is installed first, the compilation will go wrong. By then, you will be busy and have nothing to do. .
After installing the above three function libraries, you need to reconfigure PHP. This is your specialty when installing the DSO version of PHP! Then execute the make clean command, and then add the following code to the current configuration indicator:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[ /path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
Finally execute the make and make install commands in order to complete the preparation task. Restart Apache and run the phpinfo() function to check whether the new features are functioning properly.
Depending on the GD library you have installed, you may or may not have the ability to create GIF or PNG images. Here's the kicker: if you have gd-1.6 or earlier installed, you can handle GIFs but not PNGs. If you have gd-1.6 or later installed, you can process PNGs but not GIFs.
Creating a simple image requires several functions. I'll walk you through the process step by step:
Output a file header that contains the MIME type of the image you created, in our case PNG.
header ("Content-type: image/png");
Use ImageCreate() to create a variable to store a blank image. This function requires the image size in pixels. The format is ImageCreate(x_size, y_size). For a 250-X-250 pixel image, the usage is as follows:
$newImg = ImageCreate(250,250);
Because your image is still Blank, so you still have to try to fill it with some color, but first you need to assign a name to each color according to its RGB value, which uses the ImageColorAllocate() function. The format of the function is ImageColorAllocate([image], [red], [green], [blue]). If it is sky blue, the specific code is as follows:
$skyblue = ImageColorAllocate($newImg,136,193,255);
Next, you need to call the ImageFill() function to fill the image with the above color. ImageFill(), there are several versions of the function, such as ImageFillRectangle(), ImageFillPolygon() and so on. For the sake of simplicity, we use the ImageFill() function for color filling. The format is as follows:
ImageFill([image], [start x point], [start y point], [color])
ImageFill ($newImg,0,0,$skyblue);
Finally, you create the image and destroy the image stream to free up memory:
ImagePNG($newImg);
ImageDestroy($ newImg); ?>
The specific code looks a lot like the following:
header ("Content-type: image/png");
$newImg = ImageCreate(250,250);
$skyblue = ImageColorAllocate($newImg,136,193,255);
ImageFill($newImg,0,0,$skyblue);
ImagePNG($newImg);
ImageDestroy( $newImg);
?>
If you call this script skyblue.php and access it with your own browser, you will see a 250-X-250 pixel large blue PNG image .
You can also use image creation functions to process images, such as creating thumbnails of large images.
Suppose you want to create a 35-X-35 pixel thumbnail of an image. What you do is create a new 35 x 35 pixel image; create an image stream containing its original image contents; then resize the original image and place it into the new blank image.
The key function used to achieve the above purpose is ImageCopyResized(). The format of this function is as follows: ImageCopyResized([new image handle],[original image handle],[new image X], [new Image Y], [original image X], [original image Y], [new image X], [new image Y], [original image X], [original image Y]);
The following is the code Note.
/* send a header so that the browser knows the content-type of the file */
header("Content-type: image/png");
/* set up variables to hold the height and width of your new image */
$newWidth = 35;
$newHeight = 35;
/* create a blank, new image of the given new height and width */
$newImg = ImageCreate($newWidth,$newHeight);
/* get the data from the original, large image */
$origImg = ImageCreateFromPNG("test .png");
/* copy the resized image. Use the ImageSX() and ImageSY functions to get the x and y sizes of the orginal image. */
ImageCopyResized($newImg,$origImg ,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));
/* create final image and free up the memory */
ImagePNG ($newImg);
ImageDestroy($newImg); ?>
If you call the above script resized.php and access it with your own browser, you should see a 35-X- Miniature PNG image of 35 pixels size.