Home  >  Article  >  Backend Development  >  Php image processing code sharing

Php image processing code sharing

WBOY
WBOYOriginal
2016-07-29 08:47:45848browse

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();
? >


PHP code

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.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn