這篇文章主要講解了“php圖片水印添加、壓縮、剪切的封裝類實現方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php圖片水印添加、壓縮、剪切的封裝類實現方法”吧!
php對圖片文件的操作主要是利用GD庫擴展。當我們頻繁利用php對圖片進行操作時,會自然封裝很多函數,否則會寫太多重復的代碼。當有很多對圖片的相關函數的時候,我們可以考慮將這些函數也整理一下,因而就有了封裝成類的想法。
操作圖片主要歷經四個步驟:
1、打開圖片
2、操作圖片
3、輸出圖片
4、銷毀圖片
1,3,4三個步驟每次都要寫,每次又都差不多。真正需要變通的只有操作圖片的這一步驟了。操作圖片又往往通過1或多個主要的GD函數來完成。
<?php
class Image
{
private $info;
private $image;
public $type;
public function __construct($src)
{
$this->info=getimagesize($src);
$this->type=image_type_to_extension($this->info['2'],false);
$fun="imagecreatefrom{$this->type}";
$this->image=$fun($src);
}
/**
* 文字水印
* @param [type] $font 字體
* @param [type] $content 內容
* @param [type] $size 文字大小
* @param [type] $col 文字顏色(四元數組)
* @param array $location 位置
* @param integer $angle 傾斜角度
* @return [type]
*/
public function fontMark($font,$content,$size,$col,$location,$angle=0){
$col=imagecolorallocatealpha($this->image, $col['0'], $col['1'], $col['2'],$col['3']);
imagettftext($this->image, $size, $angle, $location['0'], $location['1'], $col,$font,$content);
}
/**
* 圖片水印
* @param [type] $imageMark 水印圖片地址
* @param [type] $dst 水印圖片在原圖片中的位置
* @param [type] $pct 透明度
* @return [type]
*/
public function imageMark($imageMark,$dst,$pct){
$info2=getimagesize($imageMark);
$type=image_type_to_extension($info2['2'],false);
$func2="imagecreatefrom".$type;
$water=$func2($imageMark);
imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2['0'], $info2['1'], $pct);
imagedestroy($water);
}
/**
* 壓縮圖片
* @param [type] $thumbSize 壓縮圖片大小
* @return [type] [description]
*/
public function thumb($thumbSize){
$imageThumb=imagecreatetruecolor($thumbSize[0], $thumbSize[1]);
imagecopyresampled($imageThumb, $this->image, 0, 0, 0, 0, $thumbSize[0], $thumbSize[1], $this->info['0'], $this->info['1']);
imagedestroy($this->image);
$this->image=$imageThumb;
}
/**
* 裁剪圖片
* @param [type] $cutSize 裁剪大小
* @param [type] $location 裁剪位置
* @return [type] [description]
*/
public function cut($cutSize,$location){
$imageCut=imagecreatetruecolor($cutSize[0],$cutSize[1]);
imagecopyresampled($imageCut, $this->image, 0, 0, $location[0], $location[1],$cutSize[0],$cutSize[1],$cutSize[0],$cutSize[1]);
imagedestroy($this->image);
$this->image=$imageCut;
}
/**
* 展現圖片
* @return [type] [description]
*/
public function show(){
header("content-type:".$this->info['mime']);
$funn="image".$this->type;
$funn($this->image);
}
/**
* 保存圖片
* @param [type] $newname 新圖片名
* @return [type] [description]
*/
public function save($newname){
header("content-type:".$this->info['mime']);
$funn="image".$this->type;
$funn($this->image,$newname.'.'.$this->type);
}
public function __destruct(){
imagedestroy($this->image);
}
}
?>是不是這樣操作就很簡單了,如果還需要其他操作,只需要再往這個類里面添加就好啦~~希望大家可以熟練掌握。
感謝各位的閱讀,以上就是“php圖片水印添加、壓縮、剪切的封裝類實現方法”的內容了,經過本文的學習后,相信大家對php圖片水印添加、壓縮、剪切的封裝類實現方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。