Home >Backend Development >PHP Tutorial >Php image processing code sharing
Currently, only three functions are implemented: 1: Image scaling, 2: Image cropping, 3: Adding image watermark
In the instantiation, different functions are achieved by passing different values to the second parameter
Copy Code The code is as follows:
include "image.class.php";
$image=new image("2.png", 1, "300", "500", "5.png "); //Use the image zoom function
$image=new image("2.png", 2, "0,0", "50,50", "5.png"); //Use the image cropping function
$image=new image("2.png", 3, "1.png", "0", "5.png"); //Use the image watermark function
$image->outimage();
? >
Copy code The code is as follows:
/*Known issues: 1. In the image scaling function, use the imagecreatetruecolor function to create a canvas and use the transparency processing algorithm, but images in PNG format cannot be transparent.Creating a canvas with the imagecreate function can solve this problem, but the number of colors in the scaled image is too small
*
*
*type value:
* (1): represents the use of the image scaling function. At this time, $value1 represents the zoomed image width, $value2 represents the height of the zoomed image
* (2): represents the use of image cropping function, at this time, $value1 represents the coordinates of the cropping starting point, for example: starting from the origin is "0,0" and is preceded by x Behind the axis is the y-axis, separated by, in the middle. $value2 represents the width and height of the crop. It is also in the form of "20, 20".
* (3): represents the use of the image watermark function. At this time, $value1 represents the watermark. The file name of the image. $value2 represents the position of the watermark in the image. There are 10 values to choose from. 1 represents upper left, 2 represents middle left, 3 represents left and right, 4 represents center left, 5 represents center center, and 6 represents center right. 7 represents bottom, 8 represents bottom middle, 9 represents bottom right, 0 represents random position
*
*/
class image{
private $types; //The function number used, 1 is the image zoom function and 2 is the image cropping function 3. Add image watermark function to images
private $imgtype;//Format of image
private $image; //Image resources
private $width;//Width of image
private $height;//Height of image
private $value1; //According to the different type values passed, $value1 represents different values respectively
private $value2;//According to the different type values passed, $value2 represents different values respectively
private $endaddress;//The address after output +File name
function __construct($imageaddress, $types, $value1="", $value2="", $endaddress){
$this->types=$types;
$this->image=$this ->imagesources($imageaddress);
$this->width=$this->imagesizex();
$this->height=$this->imagesizey();
$this->value1 =$value1;
$this->value2=$value2;
$this->endaddress=$endaddress;
}
function outimage(){ // Output different functions according to the different type values passed in
switch ($this->types){
case 1:
$this->scaling();
break;
case 2:
$this->clipping();
break;
case 3:
$this ->imagewater();
break;
default:
return false;
}
}
private function imagewater(){ //Add image watermark function
//Use function to get the length and width of the watermark file
$imagearrs= $this->getimagearr($this->value1);
//Call the function to calculate the location where the watermark is loaded
$positi $imagearrs[0], $imagearrs[1]);
//Add watermark
imagecopy( $this->image, $this->imagesources($this->value1), $positionarr[0], $positionarr[1], 0, 0, $imagearrs[0], $imagearrs[1]) ;
//Call the output method to save
$this->output($this->image);
}
private function clipping(){ //Image cropping function
//Assign the passed in values to variables respectively
list($src_x, $src_y)=explode(",", $this->value1);
list($dst_w, $dst_h)=explode(",", $this->value2);
if ($this->width < $src_x+$dst_w || $this->height < $src_y+$dst_h){ //This judgment is to limit the interception outside the picture
return false;
}
// Create a new canvas resource
$newimg=imagecreatetruecolor($dst_w, $dst_h);
//Crop
imagecopyresampled($newimg, $this->image, 0, 0, $src_x, $src_y, $dst_w, $ dst_h, $dst_w, $dst_h);
//Call the output method to save
$this->output($newimg);
}
private function scaling(){ //Picture scaling function
//Get the proportional scaling Width and height
$this-> proimagesize();
//Scale according to parameters, and call the output function to save the processed file
$this->output($this->imagescaling());
}
private function imagesources($imgad){ //Get the image type and open the image resource
$imagearray=$this->getimagearr($imgad);
switch($imagearray[2]){
case 1://gif
$this->imgtype=1;
$img=imagecreatefromgif($imgad);
break;
case 2://jpeg
$this->imgtype=2;
$img=imagecreatefromjpeg($imgad);
break;
case 3://png
$this->imgtype=3;
$img=imagecreatefrompng($imgad);
break;
default:
return false;
}
return $img;
}
private function imagesizex(){ //Get the image width
return imagesx($this->image);
}
private function imagesizey(){ //Get the image height
return imagesy($this->image);
}
private function proimagesize(){ //Calculate the width and height of the proportionally scaled image
if($this->value1 && ($this->width < $this->height)) { // Constant scaling algorithm
$this->value1=round(($this->value2/ $this->height)*$this->width);
}else{
$this->value2= round(($this->value1/ $this->width) * $this->height);
}
}
private function imagescaling(){//Image scaling function, returns the processed image resource
$newimg=imagecreatetruecolor($this->value1, $this->value2);
$tran=imagecolortransparent($this-> ;image);//Handling transparency algorithm
if($tran >= 0 && $tran < imagecolorstotal($this->image)){
$tranarr=imagecolorsforindex($this->image, $tran) ;
$newcolor=imagecolorallocate($newimg, $tranarr['red'], $tranarr['green'], $tranarr['blue']);
imagefill($newimg, 0, 0, $newcolor);
imagecolortransparent($newimg, $newcolor);
}
imagecopyresampled($newimg, $this->image, 0, 0, 0, 0, $this->value1, $this->value2, $this-> ;width, $this->height);
return $newimg;
}
private function output($image){//Output image
switch($this->imgtype){
case 1:
imagegif($ image, $this->endaddress);
break;
case 2:
imagejpeg($image, $this->endaddress);
break;
case 3:
imagepng($image, $this->endaddress) );
break;
default:
return false;
}
}
private function getimagearr($imagesou){//Return image attribute array method
return getimagesize($imagesou);
}
private function position($num, $width, $height){//Return the coordinates of a position based on the number passed in. $width and $height represent the width and height of the inserted image respectively
switch($num){
case 1:
$positionarr[0] =0;
$positionarr[1]=0;
break;
case 2:
$positionarr[0]=($this->width-$width)/2;
$positionarr[1]=0;
break;
case 3:
$positionarr[0]=$this->width-$width;
$positionarr[1]=0;
break;
case 4:
$positionarr[0]=0;
$ positionarr[1]=($this->height-$height)/2;
break;
case 5:
$positionarr[0]=($this->width-$width)/2;
$positionarr [1]=($this->height-$height)/2;
break;
case 6:
$positionarr[0]=$this->width-$width;
$positionarr[1]=( $this->height-$height)/2;
break;
case 7:
$positionarr[0]=0;
$positionarr[1]=$this->height-$height;
break;
case 8:
$positionarr[0]=($this->width-$width)/2;
$positionarr[1]=$this->height-$height;
break;
case 9:
$ positionarr[0]=$this->width-$width;
$positionarr[1]=$this->height-$height;
break;
case 0:
$positionarr[0]=rand(0, $this->width-$width);
$positionarr[1]=rand(0, $this->height-$height);
break;
}
return $positionarr;
}
function __destruct() {
imagedestroy($this->image);
}
}
?>
The above introduces the PHP image processing code sharing, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.