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);
}
}
?>
http://www.bkjia.com/PHPjc/324918.htmlwww.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...