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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

cd库图像处理php,PHP图像处理类库及演示分享

發(fā)布時(shí)間:2025/3/15 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cd库图像处理php,PHP图像处理类库及演示分享 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)單寫了一個(gè)PHP的圖像處理類庫,雖然功能比較少,但是目前也沒用到太高級(jí)的,以后用到了再填吧,或者哪位給點(diǎn)建議加上什么功能,或者有什么需求可以跟我說,我有時(shí)間加上,如果哪位對(duì)這個(gè)類庫進(jìn)行了擴(kuò)展的話,還麻煩拿出來大家分享一下,代碼現(xiàn)在是能用就行,考慮的東西不是很多,有什么更好的建議請(qǐng)告訴我,謝謝

Img.php

/**

* Created by PhpStorm.

* User: MCtion

* Date: 2015/5/14 0014

* Time: 15:36

* 簡(jiǎn)單的圖像類庫,本類中所有相對(duì)路徑均基于網(wǎng)站根目錄,如需修改,則修改常量__WEBROOT__即可

* 功能:指定文字內(nèi)容創(chuàng)建圖片(不支持中文)、創(chuàng)建驗(yàn)證碼圖片、創(chuàng)建縮略圖、其他功能待續(xù)

* 方法:

* Style(array $Options) 設(shè)置圖片樣式,每次設(shè)定前將重置為默認(rèn)樣式

* Create_Img_Png() 創(chuàng)建PNG圖像,相關(guān)屬性由Style指定

* Create_Img_Jpeg() 創(chuàng)建JPEG圖像,相關(guān)屬性由Style指定

* Create_Verify() 創(chuàng)建驗(yàn)證碼圖像,相關(guān)屬性由Style指定

* Get_Verify() 獲得創(chuàng)建的驗(yàn)證碼值,MD5加密

* Load_Img(string $FilePath) 加載圖像,創(chuàng)建圖像源,供其他方法調(diào)用源,FilePath為圖像相對(duì)路徑

* Create_Thumb(string $FileName,string $FilePath) 創(chuàng)建由Load_Img()加載的圖像的縮略圖,FileName為保存后的圖像前綴,FilePath為保存圖像的相對(duì)路徑,不包含文件名(例:/Uploads/images/Thumb/)

*/

if(!defined("__WEBROOT__")) define("__WEBROOT__",$_SERVER['DOCUMENT_ROOT']);

class Img {

protected $_Img; //圖片源

protected $_FileImg; //加載的圖片源

protected $_FileInfo; //加載的圖片的信息數(shù)組

protected $_PicInfo; //加載的圖片的寬高等信息數(shù)組

protected $_Rand = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ1234567890'; //隨機(jī)因子

protected $_Code = ''; //驗(yàn)證碼

public $Width = 300;//圖片默認(rèn)寬

public $Height = 80; //圖片默認(rèn)高

public $BackgroundColor = "000000";

public $Font = "/phps/Public/Font/ARIALNB.TTF"; //默認(rèn)字體

public $FontSize = 16; //默認(rèn)字體字號(hào)

public $FontColor = "ffffff"; //默認(rèn)字體顏色

public $Content = "Test Word";

public $Align = "left";

public $Codes = 4; //驗(yàn)證碼個(gè)數(shù)

public $Line = 6; //干擾線條的個(gè)數(shù)

public $LoadErr = ''; //錯(cuò)誤信息

//public function __construct(){}

/** 設(shè)置圖片屬性

* @param array $Options 屬性數(shù)組

* @return $this 返回對(duì)象

*/

public function Style($Options){

$this -> _Re_Set();

foreach($Options as $K=>$V){

if(in_array($K,array('Width','Height','BackgroundColor','Font','FontSize','FontColor','Content','Align','Codes','Line','Snow'))){

if($K == "BackgroundColor" || $K == "FontColor"){

if(preg_match("#([a-zA-Z0-9]{6})#",$V)) $this -> $K = $V;

}else{

$this -> $K = $V;

}

}

}

return $this;

}

/**

* 重置屬性,不提供外部訪問

*/

protected function _Re_Set(){

$this -> Width = 100;

$this -> Height = 30;

$this -> BackgroundColor = "000000";

$this -> Font = "/phps/Public/Font/ARIALNB.TTF";

$this -> FontSize = 16;

$this -> FontColor = "ffffff";

$this -> Align = "left";

$this -> Codes =4;

$this -> Line = 6;

}

/**

* 創(chuàng)建圖像源、添加背景、創(chuàng)建圖像

* @param bool $BGC 指定是否創(chuàng)建背景色及矩形塊

*/

protected function _Create_Img_GB($BGC = True){

$this -> _Img = imagecreatetruecolor($this -> Width,$this -> Height); //創(chuàng)建背景源

if($BGC){

preg_match("#([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})#",$this -> BackgroundColor,$ColorArr); //將顏色值分隔成三組16位進(jìn)制數(shù)

$Color = imagecolorallocate($this -> _Img,hexdec($ColorArr[1]),hexdec($ColorArr[2]),hexdec($ColorArr[3])); //給Img圖像源添加背景色

imagefilledrectangle($this -> _Img,0,$this -> Height,$this -> Width,0,$Color); //創(chuàng)建圖像

}

}

/**

* 創(chuàng)建隨機(jī)驗(yàn)證碼

*/

protected function _Create_Code(){

$Len = strlen($this -> _Rand) - 1;

for($i = 0;$i < $this -> Codes;$i++){

$this -> _Code .= $this -> _Rand[mt_rand(0,$Len)];

}

}

/**

* 向圖像中寫入字符串,暫不支持中文

*/

protected function _Write_Text(){

$FontWidth = imagefontwidth($this -> FontSize); //獲取字號(hào)的一個(gè)字符的寬度

preg_match_all('/(.)/us', $this -> Content, $TextArr); //將內(nèi)容分隔成數(shù)組一遍統(tǒng)計(jì)個(gè)數(shù)

$FontHeight = imagefontheight($this -> FontSize); //獲取字號(hào)的高度

$X = ceil(($this -> Width - ($FontWidth * count($TextArr[0]))) / 2); //設(shè)置X軸距左邊距的距離

$Y = ceil(($this -> Height + $FontHeight) / 2); //設(shè)置Y軸距上邊距的距離

preg_match("#([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})#",$this -> FontColor,$ColorArr);

$Color = imagecolorallocate($this -> _Img,hexdec($ColorArr[1]),hexdec($ColorArr[2]),hexdec($ColorArr[3])); //設(shè)置文字顏色

imagettftext($this -> _Img,$this -> FontSize,0,$X,$Y,$Color,__WEBROOT__.$this -> Font,$this -> Content); //寫入內(nèi)容

}

/**

* 向圖像中寫入驗(yàn)證碼

*/

protected function _Write_Code(){

$_X = $this -> Width / $this -> Codes; //設(shè)置寬高比

for($i = 0;$i < $this -> Codes;$i++){ //循環(huán)Codes次,每次生成一位驗(yàn)證碼值

$Color = imagecolorallocate($this -> _Img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); //隨機(jī)生成驗(yàn)證碼值的顏色

imagettftext($this -> _Img,$this -> FontSize,mt_rand(-30,30),$_X*$i+mt_rand(1,5),$this -> Height / 1.3,$Color,__WEBROOT__.$this -> Font,$this -> _Code[$i]); //生成一位驗(yàn)證碼值

}

}

/**

* 向圖像中寫入干擾線條

*/

protected function _Write_Line() { //生成干擾線條

for ($i=0;$i < $this -> Line;$i++) {

$Color = imagecolorallocate($this -> _Img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));

imageline($this -> _Img,mt_rand(0,$this -> Width),mt_rand(0,$this -> Height),mt_rand(0,$this -> Width),mt_rand(0,$this -> Height),$Color);

}

}

/**

* 設(shè)置圖像類型為JPEG

*/

protected function _Img_Jpeg(){

header('Content-type:image/jpeg');

imagejpeg($this -> _Img);

imagedestroy($this -> _Img);

}

/**

* 設(shè)置圖像類型為PNG

*/

protected function _Img_Png(){

header('Content-type:image/png');

imagepng($this -> _Img);

imagedestroy($this -> _Img);

}

/**

* 創(chuàng)建JPEG的字符串圖像

*/

public function Create_Img_Jpg(){

$this -> _Create_Img_GB(True);

$this -> _Write_Text();

$this -> _Img_Jpeg();

}

/**

* 創(chuàng)建PNG的字符串圖像

*/

public function Create_Img_Png(){

$this -> _Create_Img_GB(True);

$this -> _Write_Text();

$this -> _Img_Png();

}

/**

* 創(chuàng)建驗(yàn)證碼的PNG圖像

*/

public function Create_Verify(){

$this -> BackgroundColor = '';

for($I = 0;$I < 3;$I++){

$this -> BackgroundColor .= dechex(mt_rand(20,155));

}

$this -> _Create_Img_GB(True);

$this -> _Create_Code();

$this -> _Write_Line();

$this -> _Write_Code();

$this -> _Img_Png();

}

/**

* 外部獲取MD5加密后的驗(yàn)證碼

* @return string

*/

public function Get_Verify(){

return md5($this -> _Code);

}

/**

* 加載一個(gè)圖像文件,并獲取圖像相關(guān)信息

* @param string $FilePath 圖像相對(duì)路徑地址

* @return $this|bool 成功返回對(duì)象,否則返回FALSE

*/

public function Load_Img($FilePath){

$FilePath = __WEBROOT__.$FilePath;

if(!is_file($FilePath)){

$this -> LoadErr = "路徑錯(cuò)誤,文件不存在";

Return False;

}

$this -> _PicInfo = getimagesize($FilePath);

$this -> _FileInfo = pathinfo($FilePath);

switch($this -> _PicInfo[2]){

case 1:$this ->_FileImg = imagecreatefromgif($FilePath);break;

case 2:$this ->_FileImg = imagecreatefromjpeg($FilePath);break;

case 3:$this ->_FileImg = imagecreatefrompng($FilePath);break;

default:$this -> LoadErr = "類型錯(cuò)誤,不支持的圖片類型";Return False;

}

Return True;

}

/**

* 創(chuàng)建縮略圖

* @param string $FileName 保存的圖片名稱前綴

* @param string $FilePath 保存圖片的相對(duì)路徑

* @return mixed 返回生成的圖片的信息數(shù)組

*/

public function Create_Thumb($FileName,$FilePath){

$SavePath = __WEBROOT__.$FilePath;

if(!file_exists($SavePath)){

mkdir($SavePath,0777,true);

}

$FileName = $FileName.date("YmdHis").rand(100,999).'.'.$this -> _FileInfo['extension'];

$FilePath = $FilePath.$FileName;

$SavePath = $SavePath.$FileName;

$this -> _Create_Img_GB(False);

imagecopyresampled($this -> _Img,$this -> _FileImg,0,0,0,0,$this -> Width,$this -> Height,$this -> _PicInfo[0],$this -> _PicInfo[1]);

switch($this -> _PicInfo[2]){

case 1:imagegif($this -> _Img,$SavePath);break;

case 2:imagejpeg($this -> _Img,$SavePath);break;

case 3:imagepng($this -> _Img,$SavePath);break;

}

$FIleInfo['FileName'] = $FileName;

$FIleInfo['FilePath'] = $FilePath;

Return $FIleInfo;

}

}

使用示例

$Img = new Img();

$Options['Width'] = 300;

$Options['Height'] = 100;

$Options['Content'] = "Test Create Img";

$Options['FontColor'] = "FF0000";

$Options['BackgroundColor'] = "AAAAAA";

$Img -> Style($Options) -> Create_Img_Jpg();

if($Img -> Load_Img("/Public/images/ad1.png")){

$FileInfo = $Img -> Style(array('Width'=>30,'Height'=>30)) -> Create_Thumb("Thumb","/Uploads/images/");

var_dump($FileInfo);

}else{

die("加載圖像失敗,".$Img -> LoadErr);

}

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的cd库图像处理php,PHP图像处理类库及演示分享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。