日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 图片 处理,php图片处理类

發布時間:2024/9/27 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 图片 处理,php图片处理类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章主要介紹php圖片處理類,感興趣的朋友參考下,希望對大家有所幫助。

示例代碼如下:<?php

/*已知問題:1.在圖片縮放功能中,使用imagecreatetruecolor函數創建畫布,并使用透明處理算法,但PNG格式的圖片無法透明。用imagecreate函數創建畫布可以解決這個問題,但是縮放出來的圖片色數太少了

*

*

*type值:

* (1):代表使用圖片縮放功能,此時,$value1代表縮放后圖片的寬度,$value2代表縮放后圖片的高度

* (2):代表使用圖片裁剪功能,此時,$value1代表裁剪開始點的坐標,例:從原點開始即是“0,0”前面是x軸后面是y軸,中間用,分隔,$value2代表裁剪的寬度和高度,同樣也是“20,20”的形式使用

* (3):代表使用加圖片水印功能,此時,$value1代表水印圖片的文件名,$value2代表水印在圖片中的位置,有10值個可以選,1代表左上,2代表左中,3代表左右,4代表中左,5代表中中,6代表中右,7代表下做,8代表下中,9代表下右,0代表隨機位置

*

*/

class image{

private $types; //使用的功能編號,1為圖片縮放功能 2為圖片裁剪功能 3,為圖片加圖片水印功能

private $imgtype;//圖片的格式

private $image; //圖片資源

private $width;//圖片寬度

private $height;//圖片高度

private $value1;//根據所傳type值的不同,$value1分別代表不同的值

private $value2;//根據所傳type值的不同,$value2分別代表不同的值

private $endaddress;//輸出后的地址+文件名

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(){ //根據傳入type值的不同,輸出不同的功能

switch($this->types){

case 1:

$this->scaling();

break;

case 2:

$this->clipping();

break;

case 3:

$this->imagewater();

break;

default:

return false;

}

}

private function imagewater(){ //http://www.hzhuti.com 加圖片水印功能

//用函數獲取水印文件的長和寬

$imagearrs=$this->getimagearr($this->value1);

//調用函數計算出水印加載的位置

$positionarr=$this->position($this->value2, $imagearrs[0], $imagearrs[1]);

//加水印

imagecopy($this->image, $this->imagesources($this->value1), $positionarr[0], $positionarr[1], 0, 0, $imagearrs[0], $imagearrs[1]);

//調用輸出方法保存

$this->output($this->image);

}

private function clipping(){ //圖片裁剪功能

//將傳進來的值分別賦給變量

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){ //這個判斷就是限制不能截取到圖片外面去

return false;

}

//創建新的畫布資源

$newimg=imagecreatetruecolor($dst_w, $dst_h);

//進行裁剪

imagecopyresampled($newimg, $this->image, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $dst_w, $dst_h);

//調用輸出方法保存

$this->output($newimg);

}

private function scaling(){ //圖片縮放功能

//獲取等比縮放的寬和高

$this-> proimagesize();

//根據參數進行縮放,并調用輸出函數保存處理后的文件

$this->output($this->imagescaling());

}

private function imagesources($imgad){ //獲取圖片類型并打開圖像資源

$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(){ //獲得圖片寬度

return imagesx($this->image);

}

private function imagesizey(){ //獲取圖片高度

return imagesy($this->image);

}

private function proimagesize(){ //計算等比縮放的圖片的寬和高

if($this->value1 && ($this->width < $this->height)) { //等比縮放算法

$this->value1=round(($this->value2/ $this->height)*$this->width);

}else{

$this->value2=round(($this->value1/ $this->width) * $this->height);

}

}

private function imagescaling(){//圖像縮放功能,返回處理后的圖像資源

$newimg=imagecreatetruecolor($this->value1, $this->value2);

$tran=imagecolortransparent($this->image);//處理透明算法

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){//輸出圖像

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 getimagesize($imagesou);

}

private function position($num, $width, $height){//根據傳入的數字返回一個位置的坐標,$width和$height分別代表插入圖像的寬和高

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);

}

}

?>

總結:以上就是本篇文的全部內容,希望能對大家的學習有所幫助。

相關推薦:

總結

以上是生活随笔為你收集整理的php 图片 处理,php图片处理类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。