Php image processing code sharing_PHP tutorial
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
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
/*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);
}
}
?>

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

In this chapter, we are going to learn the following topics related to routing ?

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Validator can be created by adding the following two lines in the controller.
