Home  >  Article  >  Backend Development  >  Php image processing code sharing_PHP tutorial

Php image processing code sharing_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:21:24715browse

Currently, only three functions are implemented: 1: Image scaling, 2: Image cropping, 3: Adding image watermark
In the instantiation, different functions are implemented 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, this When, $value1 represents the width of the zoomed image, $value2 represents the height of the zoomed image
* (2): represents using the image cropping function, at this time, $value1 represents the coordinates of the cropping start point, for example: starting from the origin That is, "0,0" is preceded by the x-axis and followed by 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 Add image watermark function. At this time, $value1 represents the file name of the watermarked image, and $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, and 4 represents middle. Left, 5 represents center, 6 represents center right, 7 represents bottom, 8 represents bottom center, 9 represents bottom right, 0 represents random position
*
*/
class image{
private $types; //Function numbers used, 1 is the image zoom function, 2 is the image cropping function, 3 is the image watermark function for the image
private $imgtype;//Format of the image
private $image; //Image Resource
private $width;//Picture width
private $height;//Picture height
private $value1;//Depending on the type value passed, $value1 represents different values
private $value2;//According to the different type values ​​passed, $value2 represents different values ​​respectively
private $endaddress;//The output address + 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(){ //The output is different depending on the type value passed in Function
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 position where the watermark is loaded
$positionarr=$this->position($this->value2, $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 values ​​to variables
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 width of the proportional scaling and high
$this-> proimagesize();
//Scale according to the 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)) { //Equal 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 according to the passed in number, $width and $height respectively represent the width and height of the inserted image
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);
}
}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/324918.htmlTechArticleCurrently only three functions are implemented: 1: Image zoom, 2: Image cropping, 3: Add image watermark on During instantiation, different functions can be copied by passing different values ​​to the second parameter...
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