Home > Backend Development > PHP Tutorial > PHP common image processing classes_PHP tutorial

PHP common image processing classes_PHP tutorial

WBOY
Release: 2016-07-13 10:46:14
Original
769 people have browsed it

We often need watermark thumbnails when operating images, and the watermark can be assigned or selected. 1 represents upper left, 2 represents middle left, 3 represents left and right, 4 represents middle left, 5 represents middle left, and 6 represents Center right, 7 represents bottom, 8 represents bottom center, 9 represents bottom right, 0 represents random position

The code is as follows Copy code

/*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 using 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 zoom function. At this time, $value1 represents the width of the zoomed image, and $value2 represents the height of the zoomed image
* (2): Represents the use of the image cropping function. At this time, $value1 represents the coordinates of the cropping start point. For example: starting from the origin is "0,0", with the x-axis in front and the y-axis in the back, separated by, in the middle, $ value2 represents the width and height of cropping, also in the form of "20, 20"
* (3): Represents the use of the image watermark function. At this time, $value1 represents the file name of the watermark image, $value2 represents the position of the watermark in the image, there are 10 values ​​​​to choose from, 1 represents the upper left, 2 represents the middle left, 3 represents left and right, 4 represents center 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, the image watermark function is added to the image
private $imgtype;//Format of image
private $image; //Image resources
private $width;//image width
private $height;//image height
private $value1;//Depending on the type value passed, $value1 represents different values ​​
private $value2;//Depending on the type value passed, $value2 represents different values ​​
private $endaddress;//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(){ //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
$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 in 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(){ //Image scaling function
//Get the width and height of proportional scaling
$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 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);//Processing 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 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/632967.htmlTechArticleWe often need watermark thumbnails when operating images, and the watermark can be specified or selected, 1 means Top left, 2 represents left center, 3 represents left, 4 represents center left, 5 represents center, 6 represents center...
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template