After installing some third-party function libraries, combined with graphics processing skills, you can quickly use PHP to create and process images. In fact, you don't need a lot of geometry knowledge either - I failed that class in middle school and now can create images in PHP!
Before using basic image creation functions, the GD library needs to be installed. 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. asdf
Here, you also need to make further adjustments to your system settings. First install t1lib and finish, then jpeg-6b. The third step is to install the GD function library. Make sure the above three parts are installed in order, the reason is that you need to compile the GD library to use the jpeg-6b library. If you install jpeg-6b first, compilation errors will occur, which will leave you confused for a while.
After the three function libraries, reconfigure PHP. This is the typical approach when easily installing the DSO version of PHP. Then execute the make clean command and add the following code to the current configuration prompt:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
Finally, execute make and make install to complete the configuration. Restart Apache and run the phpinfo() function to check that the new functionality is working properly, and you're good to go.
Depending on the version of the GD library installed, you may have the ability to create GIF or PNG images. The key is that if you have installed gd-1.6 or earlier versions, you can process GIF files, but not PNG files; if you have installed gd-1.6 or later versions, you can process PNG files but not GIF files.
Creating a simple image requires several functions. I will demonstrate it step by step below.
The output contains the header of the MIME type of the image you created, in this case PNG.
header ("Content-type: image/png");
Use ImageCreate() to create a variable to store the blank image. This function requires an image pixel size. The format is ImageCreate(x_size, y_size), for a 250*250 pixel image, as follows:
$newImg = ImageCreate(250,250);
Since your image is still blank at this point, you need to fill it with some color. But first you need to use the ImageColorAllocate() function to determine a name for each color according to the RGB value of the color. The format of the function is ImageColorAllocate([image], [red], [green], [blue]). If it is sky blue, you should use:
$skyblue = ImageColorAllocate($newImg,136,193,255);
Next, use the ImageFill() function to fill the image with the above colors. In fact, there are multiple versions of the ImageFill() function, such as ImageFillRectangle(), ImageFillPolygon(), etc. For the sake of simplicity, the ImageFill() function is used for color filling. The format is as follows:
ImageFill([image], [start x point], [start y point], [color])
ImageFill($newImg,0,0,$skyblue);
Finally, create the final image and destroy the image stream to free up memory and tidy up the system when finished:
ImagePNG($newImg);
ImageDestroy($newImg);
Your code should look like this:
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 the script skyblue.php and access it with your browser, you will see a 250*250 pixel blue PNG image.
You can also use image creation functions to process images, such as creating thumbnails for large images.
Suppose you plan to create a 35*35 pixel thumbnail for a certain image. All you have to do is create a new 35*35 pixel size image; generate an image stream containing the contents of the original image; then change the size of the original image and place it into a new blank image.
The key function to achieve this goal is ImageCopyResized(), and the format 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]);
Comments below the code:
/* Send the file header to let the browser know the file type */
header("Content-type: image/png");
/*Set variables to save the length and width of the new image*/
$newWidth = 35;
$newHeight = 35;
/* Create a new blank image with the given length and width */
$newImg = ImageCreate($newWidth,$newHeight);
/* Get data from the original large image */
$origImg = ImageCreateFromPNG("test.png");
/* Copy the resized image. Use the functions ImageSX() and ImageSY to obtain the x and x dimensions of the original image */
ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));
/* Create final image and clear memory */
ImagePNG($newImg);
ImageDestroy($newImg); ?>
If you call the script resized.php and use a browser to access this file, you can see a 35*35 pixel thumbnail PNG image.