Home >Backend Development >PHP Tutorial >PHP image processing (zoom, crop, scale, flip, rotate, transparent, sharpen)_PHP tutorial

PHP image processing (zoom, crop, scale, flip, rotate, transparent, sharpen)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:46:20973browse

This article summarizes some commonly used image processing functions for students, including scaling, cropping, zooming, flipping, rotating, transparency, and sharpening functions. You can refer to them for reference.


Note: If you want to use php gd processing, we need to open the gd library


Enable PHP GD library support under Windows

Find php.ini, open the content and find:

;extension=php_gd2.dll

Remove the semicolon ";" at the front and save it. If there is no semicolon in the first place, it means it is already enabled.


Open GD library in linux


## Check whether the GD library is installed or not using the command
php5 -m | grep -i gd
Or
php -i | grep -i --color gd
##If the GD library is not installed, install it on the server. The method is as follows
### If it is a source code installation, add the parameter
--with-gd
### If it is a Debian Linux system, use apt-get to install it, as follows
apt-get install php5-gd
### If it is a CentOS system, use yum to install it, as follows
yum install php-gd
### If it is a suse-based Linux system, use yast to install it, as follows
yast -i php5_gd


1. Create image resources

imagecreatetruecolor(width,height);

imagecreatefromgif(image name);

imagecreatefrompng(image name);

imagecreatefromjpeg(image name);

Draw various images

imagegif(image resource, save path);

imagepng()

imagejpeg();


2. Get image attributes

imagesx(res//width

imagesy(res//height

getimagesize(file path)

Returns an array with four cells. Index 0 contains the pixel values ​​for the width of the image, and index 1 contains the pixel values ​​for the height of the image. Index 2 is the tag of the image type: 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM. These tags correspond to the new IMAGETYPE constant added in PHP 4.3.0. Index 3 is a text string with the content "height="yyy" width="xxx"" and can be used directly in the IMG tag. Destroy image resources

imagedestroy(image resource);


3. Transparent processing

The transparent colors of PNG and jpeg are normal, only gif is abnormal

imagecolortransparent(resource image [,int color])//Set a color to be transparent

imagecolorstotal()

imagecolorforindex();

4. Cropping of pictures

imagecopyresized()

imagecopyresampled();


5. Add watermark (text, picture)

String encoding conversion string iconv ( string $in_charset , string $out_charset , string $str )


6. Image rotation

imagerotate(); // Image flip at specified angle


7. Flip of pictures

Flip along the X-axis along the Y-axis

8. Sharpening

imagecolorsforindex()

imagecolorat()

Draw shapes on pictures
$img=imagecreatefromgif("./images/map.gif");
$red= imagecolorallocate($img, 255, 0, 0);

imageline($img, 0, 0, 100, 100, $red);

imageellipse($img, 200, 100, 100, 100, $red);

imagegif($img, "./images/map2.gif");

imagedestroy($img); normal image scaling

$filename="./images/hee.jpg";

$per=0.3;

list($width, $height)=getimagesize($filename);

$n_w=$width*$per;
$n_h=$width*$per;

$new=imagecreatetruecolor($n_w, $n_h);

$img=imagecreatefromjpeg($filename);
//Copy part of the image and adjust it

imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);
//Image output new image, save as

imagejpeg($new, "./images/hee2.jpg");

imagedestroy($new);
imagedestroy($img); The image is scaled proportionally and the transparent color is not processed

function thumn($background, $width, $height, $newfile) {
list($s_w, $s_h)=getimagesize($background);//Get the original image height and width

if ($width && ($s_w < $s_h)) {
$width = ($height / $s_h) * $s_w;
} else {
$height = ($width / $s_w) * $s_h;
}

$new=imagecreatetruecolor($width, $height);

$img=imagecreatefromjpeg($background);

imagecopyresampled($new, $img, 0, 0, 0, 0, $width, $height, $s_w, $s_h);

imagejpeg($new, $newfile);

imagedestroy($new);
imagedestroy($img);
}

thumn("images/hee.jpg", 200, 200, "./images/hee3.jpg");gif transparent color processing

function thumn($background, $width, $height, $newfile) {
list($s_w, $s_h)=getimagesize($background);

if ($width && ($s_w < $s_h)) {
$width = ($height / $s_h) * $s_w;
} else {
$height = ($width / $s_w) * $s_h;
}

 $new=imagecreatetruecolor($width, $height);

 $img=imagecreatefromgif($background);

 $otsc=imagecolortransparent($img);
 if($otsc >=0 && $otst < imagecolorstotal($img)){//判断索引色
  $tran=imagecolorsforindex($img, $otsc);//索引颜色值

  $newt=imagecolorallocate($new, $tran["red"], $tran["green"], $tran["blue"]);

  imagefill($new, 0, 0, $newt);

  imagecolortransparent($new, $newt);
 }

 imagecopyresized($new, $img, 0, 0, 0, 0, $width, $height, $s_w, $s_h);

 imagegif($new, $newfile);

 imagedestroy($new);
 imagedestroy($img);
}

thumn("images/map.gif", 200, 200, "./images/map3.gif");图片裁剪

function cut($background, $cut_x, $cut_y, $cut_width, $cut_height, $location){

 $back=imagecreatefromjpeg($background);

 $new=imagecreatetruecolor($cut_width, $cut_height);

 imagecopyresampled($new, $back, 0, 0, $cut_x, $cut_y, $cut_width, $cut_height,$cut_width,$cut_height);

 imagejpeg($new, $location);

 imagedestroy($new);
 imagedestroy($back);
}

cut("./images/hee.jpg", 440, 140, 117, 112, "./images/hee5.jpg");图片加水印

文字水印

function mark_text($background, $text, $x, $y){
  $back=imagecreatefromjpeg($background);

  $color=imagecolorallocate($back, 0, 255, 0);

  imagettftext($back, 20, 0, $x, $y, $color, "simkai.ttf", $text);

  imagejpeg($back, "./images/hee7.jpg");

  imagedestroy($back);
 }

 mark_text("./images/hee.jpg", "细说PHP", 150, 250);

//图片水印
function mark_pic($background, $waterpic, $x, $y){
$back=imagecreatefromjpeg($background);
$water=imagecreatefromgif($waterpic);
$w_w=imagesx($water);
$w_h=imagesy($water);
imagecopy($back, $water, $x, $y, 0, 0, $w_w, $w_h);
imagejpeg($back,"./images/hee8.jpg");
imagedestroy($back);
imagedestroy($water);
}
mark_pic("./images/hee.jpg", "./images/gaolf.gif", 50, 200);图片旋转

$back=imagecreatefromjpeg("./images/hee.jpg");

 $new=imagerotate($back, 45, 0);

 imagejpeg($new, "./images/hee9.jpg");图片水平翻转垂直翻转

function turn_y($background, $newfile){
  $back=imagecreatefromjpeg($background);

  $width=imagesx($back);
  $height=imagesy($back);

  $new=imagecreatetruecolor($width, $height);

  for($x=0; $x < $width; $x++){
   imagecopy($new, $back, $width-$x-1, 0, $x, 0, 1, $height);
  }

  imagejpeg($new, $newfile);

  imagedestroy($back);
  imagedestroy($new);
 }

 function turn_x($background, $newfile){
  $back=imagecreatefromjpeg($background);

  $width=imagesx($back);
  $height=imagesy($back);

  $new=imagecreatetruecolor($width, $height);

  for($y=0; $y < $height; $y++){
   imagecopy($new, $back,0, $height-$y-1, 0, $y, $width, 1);
  }

  imagejpeg($new, $newfile);

  imagedestroy($back);
  imagedestroy($new);
 }

 turn_y("./images/hee.jpg", "./images/hee11.jpg");
 turn_x("./images/hee.jpg", "./images/hee12.jpg"); 图片锐化

function sharp($background, $degree, $save){
 $back=imagecreatefromjpeg($background);

 $b_x=imagesx($back);
 $b_y=imagesy($back);

 $dst=imagecreatefromjpeg($background);
 for($i=0; $i<$b_x; $i++){
  for($j=0; $j<$b_y; $j++){
   $b_clr1=imagecolorsforindex($back, imagecolorat($back, $i-1, $j-1));前一个像素颜色数组
   $b_clr2=imagecolorsforindex($back, imagecolorat($back, $i, $j));取出当前颜色数组

   $r=intval($b_clr2["red"]+$degree*($b_clr2["red"]-$b_clr1["red"]));加深
   $g=intval($b_clr2["green"]+$degree*($b_clr2["green"]-$b_clr1["green"]));
   $b=intval($b_clr2["blue"]+$degree*($b_clr2["blue"]-$b_clr1["blue"]));

$r=min(255, max($r, 0));//Limit the range of r to 0-255
$g=min(255, max($g, 0));
$b=min(255, max($b, 0));

if(($d_clr=imagecolorexact($dst, $r, $g, $b))==-1){//Equal to 1 and not within the color range
$d_clr=Imagecolorallocate($dst, $r, $g, $b);//Create a color
}

imagesetpixel($dst, $i, $j, $d_clr);
}

}
imagejpeg($dst, $save);
imagedestroy($back);
imagedestroy($dst);
}

sharp("./images/hee.jpg", 20, "./images/hee13.jpg");October 26th, 2011No comments yet sincerely welcome PHP design, implementation and application verification code class
validationcode.class.php

/* Develop a verification code class
*
* 1. What is verification code
*
* 2. The function of verification code
*
* 3. Write verification code class (PHP image processing)
*
* 4. Use verification code
*
*
*/ class ValidationCode {
private $width;
private $height;
private $codeNum;
private $image; //Image resource
private $disturbColorNum;
private $checkCode;

function __construct($width=80, $height=20, $codeNum=4){
$this->width=$width;
$this->height=$height;
$this->codeNum=$codeNum;
$this->checkCode=$this->createCheckCode();
$number=floor($width*$height/15);

if($number > 240-$codeNum){
$this->disturbColorNum= 240-$codeNum;
}else{
$this->disturbColorNum=$number;
}

}
//Output the image to the browser by accessing this method
function showImage($fontFace=""){
//Step one: Create image background
$this->createImage();
//Step 2: Set up interference elements
$this->setDisturbColor();
//Step 3: Draw random text into the image
$this->outputText($fontFace);
//Step 4: Output image
$this->outputImage();
}

//Get the randomly created verification code string by calling this method
function getCheckCode(){
Return $this->checkCode;
}

private function createImage(){
//Create image resources
$this->image=imagecreatetruecolor($this->width, $this->height);
//Random background color
$backColor=imagecolorallocate($this->image, rand(225, 255), rand(225,255), rand(225, 255));
//Add color to the background
Imagefill($this->image, 0, 0, $backColor);
//Set border color
$border=imagecolorallocate($this->image, 0, 0, 0);
//Draw a rectangular border
Imagerectangle($this->image, 0, 0, $this->width-1, $this->height-1, $border);
}

private function setDisturbColor(){
for($i=0; $i<$this->disturbColorNum; $i++){
$color=imagecolorallocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($this->image, rand(1, $this->width-2), rand(1, $this->height-2), $color);
}

for($i=0; $i<10; $i++){
$color=imagecolorallocate($this->image, rand(200, 255), rand(200, 255), rand(200, 255));
imagearc($this->image, rand(-10, $this->width), rand(-10, $this->height), rand(30, 300), rand(20, 200), 55 , 44, $color);
}
}

private function createCheckCode(){
$code="23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ";
$string='';
for($i=0; $i < $this->codeNum; $i++){
$char=$code{rand(0, strlen($code)-1)};
$string.=$char;
}

return $string;
}

  private function outputText($fontFace=""){
   for($i=0; $i<$this->codeNum; $i++){
    $fontcolor=imagecolorallocate($this->image, rand(0, 128), rand(0, 128), rand(0, 128));
    if($fontFace==""){
     $fontsize=rand(3, 5);
     $x=floor($this->width/$this->codeNum)*$i+3;
     $y=rand(0, $this->height-15);
     imagechar($this->image,$fontsize, $x, $y, $this->checkCode{$i},$fontcolor);
    }else{
     $fontsize=rand(12, 16);
     $x=floor(($this->width-8)/$this->codeNum)*$i+8;
     $y=rand($fontSize+5, $this->height);
     imagettftext($this->image,$fontsize,rand(-30, 30),$x,$y ,$fontcolor, $fontFace, $this->checkCode{$i});
    }
   }
  }

  private function outputImage() {
   if(imagetypes() & IMG_GIF){
    header("Content-Type:image/gif");
    imagepng($this->image);
   }else if(imagetypes() & IMG_JPG){
    header("Content-Type:image/jpeg");
    imagepng($this->image);
   }else if(imagetypes() & IMG_PNG){
    header("Content-Type:image/png");
    imagepng($this->image);
   }else if(imagetypes() & IMG_WBMP){
    header("Content-Type:image/vnd.wap.wbmp");
    imagepng($this->image);
   }else{
    die("PHP不支持图像创建");
   }
  }

  function __destruct(){
   imagedestroy($this->image);
  }
 }code.php

 session_start();
 include "validationcode.class.php";

 $code=new ValidationCode(80, 20, 4);

 $code->showImage();   //输出到页面中供 注册或登录使用

 $_SESSION["code"]=$code->getCheckCode();  //将验证码保存到服务器中demo.php

 session_start();
 echo $_POST["code"]."
";
 echo $_SESSION["code"]."
";

 if(strtoupper($_POST["code"])==strtoupper($_SESSION["code"])){
  echo "ok";
 }else{
  echo "error";
 }
?>

 


  user:

  pass:

  code:

  

 



1、画图

验证码,统计图

安装GD库(图片处理库)

■创建一个画布—-创建资源类型——–高度、宽度
■绘制图像
1、制定各种颜色
2、矩形、园、点、线段、扇形、画字(字符、字符串、freetype字体),每一个图像对应一个函数

■输出图像/保存处理好的图像
1、输出各种类型(gif、png、jpeg)

imagegif();
imagepng();
imagegpeg();

■Release resources
//step 1Create image resources
$img=imagecreatetruecolor(200,200);
$red=imagecolorallocate($img,255,0,0);
$yellow=imagecolorallocate($img,255,255,0);
$green=imagecolorallocate($img,0,255,0);
$blue=imagecolorallocate($img,0,0,255);
imagefill($img,0,0,$yellow);//Color filling
//step2 draw various graphics
imagefilledrectangle($img,10,10,80,80,$red);//Draw a rectangle and fill it
imagerectangle($img,10,10,80,80,$red));//Draw a rectangle without filling it and fill it with color

//Line segment
imageline($img,0, 0, 200, 200 ,$blue);
imageline($img,200, 0, 0, 200, $blue);

//Click
imagesetpixel($img,50, 50 ,$red);
imagesetpixel($img,55, 50,$red);
imagesetpixel($img,59, 50,$red);
imagesetpixel($img,64, 50,$red);
imagesetpixel($img,72, 50,$red);

// Circle
imageellipse($img, 100, 100, 100, 100,$green);
//Circle
imagefilledellipse($img, 100, 100, 10, 10,$blue);
Border
//Output image or save image
header("Content-Type:img/gif");
imagegif($img);
//Release resources
imagedestory($img);

Draw a pie chart

//step 1 Create image resources
$img=imagecreatetruecolor(200, 200);

// $img=imagecreate(200, 200);

$white=imagecolorallocate($img, 255, 255, 255);
$gray=imagecolorallocate($img, 0xC0, 0xC0, 0xC0);
$darkgray=imagecolorallocate($img, 0x90, 0x90, 0x90);
$navy=imagecolorallocate($img, 0, 0, 0x80);
$darknavy=imagecolorallocate($img, 0, 0, 0x50);
$red= imagecolorallocate($img, 0xFF, 0, 0);
$darkred=imagecolorallocate($img, 0x90, 0, 0);

imagefill($img, 0, 0, $white);

//3D effect
for($i=60; $i>50; $i--){
imagefilledarc($img, 50, $i,100, 50, -160, 40, $darkgray, IMG_ARC_PIE);
imagefilledarc($img, 50, $i,100, 50, 40, 75, $darknavy, IMG_ARC_PIE);
imagefilledarc($img, 50, $i,100, 50, 75, 200, $darkred, IMG_ARC_PIE);
}
imagefilledarc($img, 50, $i,100, 50, -160, 40, $gray, IMG_ARC_PIE);
imagefilledarc($img, 50, $i,100, 50, 40, 75, $navy, IMG_ARC_PIE);
imagefilledarc($img, 50, $i,100, 50, 75, 200, $red, IMG_ARC_PIE);

header("Content-Type:image/gif");
imagegif($img);

//Release resources
imagedestroy($img); draw text

//step 1Create image resources
$img=imagecreatetruecolor(200, 200);

// $img=imagecreate(200, 200);

$white=imagecolorallocate($img, 255, 255, 255);
$gray=imagecolorallocate($img, 0xC0, 0xC0, 0xC0);
$darkgray=imagecolorallocate($img, 0x90, 0x90, 0x90);
$navy=imagecolorallocate($img, 0, 0, 0x80);
$darknavy=imagecolorallocate($img, 0, 0, 0x50);
$red= imagecolorallocate($img, 0xFF, 0, 0);
$darkred=imagecolorallocate($img, 0x90, 0, 0);

imagefill($img, 0, 0, $gray);

imagechar($img, 5, 100, 100, "A", $red);
imagechar($img, 5, 120, 120, "B", $red);
imagecharup($img, 5, 60, 60, "C", $red);
imagecharup($img, 5, 80, 80, "D", $red);

imagestring($img, 3, 10, 10, "Hello", $navy);
imagestringup($img, 3, 10, 80, "Hello", $navy);

imagettftext($img, 25, 60, 150, 150, $red, "simkai.ttf", "##");
imagettftext($img, 12, -60, 50, 150, $red, "simli.ttf", "##");

header("Content-Type:image/gif");
imagegif($img);

//Release resources
imagedestroy($img);2. Process the original image

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/632953.htmlTechArticleThis article summarizes some commonly used image processing functions for students, including scaling, cropping, zooming, and flipping , rotation, transparency, and sharpening functions, you can refer to them. Things to note...
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