亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP圖像處理類庫及演示分享

2024-05-04 23:35:17
字體:
來源:轉載
供稿:網友

近期需要做一些圖像處理方面的學習和研究,首要任務就是選擇一套合適的圖像處理類庫。于是參考其他類庫自己編寫了一個簡單的,僅僅實現了指定文字內容創建圖片(不支持中文)、創建驗證碼圖片、創建縮略圖,有需要的小伙伴可以參考下。

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

Img.php

 

 
  1. <?php 
  2. /** 
  3. * Created by PhpStorm. 
  4. * User: MCtion 
  5. * Date: 2015/5/14 0014 
  6. * Time: 15:36 
  7. * 簡單的圖像類庫,本類中所有相對路徑均基于網站根目錄,如需修改,則修改常量__WEBROOT__即可 
  8. * 功能:指定文字內容創建圖片(不支持中文)、創建驗證碼圖片、創建縮略圖、其他功能待續 
  9. * 方法: 
  10. * Style(array $Options) 設置圖片樣式,每次設定前將重置為默認樣式 
  11. * Create_Img_Png() 創建PNG圖像,相關屬性由Style指定 
  12. * Create_Img_Jpeg() 創建JPEG圖像,相關屬性由Style指定 
  13. * Create_Verify() 創建驗證碼圖像,相關屬性由Style指定 
  14. * Get_Verify() 獲得創建的驗證碼值,MD5加密 
  15. * Load_Img(string $FilePath) 加載圖像,創建圖像源,供其他方法調用源,FilePath為圖像相對路徑 
  16. * Create_Thumb(string $FileName,string $FilePath) 創建由Load_Img()加載的圖像的縮略圖,FileName為保存后的圖像前綴,FilePath為保存圖像的相對路徑,不包含文件名(例:/Uploads/images/Thumb/) 
  17. */ 
  18.  
  19. if(!defined("__WEBROOT__")) define("__WEBROOT__",$_SERVER['DOCUMENT_ROOT']); 
  20.  
  21. class Img { 
  22. protected $_Img//圖片源 
  23. protected $_FileImg//加載的圖片源 
  24. protected $_FileInfo//加載的圖片的信息數組 
  25. protected $_PicInfo//加載的圖片的寬高等信息數組 
  26. protected $_Rand = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ1234567890'//隨機因子 
  27. protected $_Code = ''//驗證碼 
  28. public $Width = 300;//圖片默認寬 
  29. public $Height = 80; //圖片默認高 
  30. public $BackgroundColor = "000000"
  31. public $Font = "/phps/Public/Font/ARIALNB.TTF"//默認字體 
  32. public $FontSize = 16; //默認字體字號 
  33. public $FontColor = "ffffff"//默認字體顏色 
  34. public $Content = "Test Word"
  35. public $Align = "left"
  36. public $Codes = 4; //驗證碼個數 
  37. public $Line = 6; //干擾線條的個數 
  38. public $LoadErr = ''//錯誤信息 
  39.  
  40. //public function __construct(){} 
  41.  
  42. /** 設置圖片屬性 
  43. * @param array $Options 屬性數組 
  44. * @return $this 返回對象 
  45. */ 
  46. public function Style($Options){ 
  47. $this -> _Re_Set(); 
  48. foreach($Options as $K=>$V){ 
  49. if(in_array($K,array('Width','Height','BackgroundColor','Font','FontSize','FontColor','Content','Align','Codes','Line','Snow'))){ 
  50. if($K == "BackgroundColor" || $K == "FontColor"){ 
  51. if(preg_match("#([a-zA-Z0-9]{6})#",$V)) $this -> $K = $V
  52. }else
  53. $this -> $K = $V
  54. return $this
  55.  
  56. /** 
  57. * 重置屬性,不提供外部訪問 
  58. */ 
  59. protected function _Re_Set(){ 
  60. $this -> Width = 100; 
  61. $this -> Height = 30; 
  62. $this -> BackgroundColor = "000000"
  63. $this -> Font = "/phps/Public/Font/ARIALNB.TTF"
  64. $this -> FontSize = 16; 
  65. $this -> FontColor = "ffffff"
  66. $this -> Align = "left"
  67. $this -> Codes =4; 
  68. $this -> Line = 6; 
  69.  
  70. /** 
  71. * 創建圖像源、添加背景、創建圖像 
  72. * @param bool $BGC 指定是否創建背景色及矩形塊 
  73. */ 
  74. protected function _Create_Img_GB($BGC = True){ 
  75. $this -> _Img = imagecreatetruecolor($this -> Width,$this -> Height); //創建背景源 
  76. if($BGC){ 
  77. preg_match("#([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})#",$this -> BackgroundColor,$ColorArr); //將顏色值分隔成三組16位進制數 
  78. $Color = imagecolorallocate($this -> _Img,hexdec($ColorArr[1]),hexdec($ColorArr[2]),hexdec($ColorArr[3])); //給Img圖像源添加背景色 
  79. imagefilledrectangle($this -> _Img,0,$this -> Height,$this -> Width,0,$Color); //創建圖像 
  80.  
  81. /** 
  82. * 創建隨機驗證碼 
  83. */ 
  84. protected function _Create_Code(){ 
  85. $Len = strlen($this -> _Rand) - 1; 
  86. for($i = 0;$i < $this -> Codes;$i++){ 
  87. $this -> _Code .= $this -> _Rand[mt_rand(0,$Len)]; 
  88.  
  89. /** 
  90. * 向圖像中寫入字符串,暫不支持中文 
  91. */ 
  92. protected function _Write_Text(){ 
  93. $FontWidth = imagefontwidth($this -> FontSize); //獲取字號的一個字符的寬度 
  94. preg_match_all('/(.)/us'$this -> Content, $TextArr); //將內容分隔成數組一遍統計個數 
  95. $FontHeight = imagefontheight($this -> FontSize); //獲取字號的高度 
  96. $X = ceil(($this -> Width - ($FontWidth * count($TextArr[0]))) / 2); //設置X軸距左邊距的距離 
  97. $Y = ceil(($this -> Height + $FontHeight) / 2); //設置Y軸距上邊距的距離 
  98. preg_match("#([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})([a-zA-Z0-9]{2})#",$this -> FontColor,$ColorArr); 
  99. $Color = imagecolorallocate($this -> _Img,hexdec($ColorArr[1]),hexdec($ColorArr[2]),hexdec($ColorArr[3])); //設置文字顏色 
  100. imagettftext($this -> _Img,$this -> FontSize,0,$X,$Y,$Color,__WEBROOT__.$this -> Font,$this -> Content); //寫入內容 
  101.  
  102. /** 
  103. * 向圖像中寫入驗證碼 
  104. */ 
  105. protected function _Write_Code(){ 
  106. $_X = $this -> Width / $this -> Codes; //設置寬高比 
  107. for($i = 0;$i < $this -> Codes;$i++){ //循環Codes次,每次生成一位驗證碼值 
  108. $Color = imagecolorallocate($this -> _Img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); //隨機生成驗證碼值的顏色 
  109. 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]); //生成一位驗證碼值 
  110.  
  111. /** 
  112. * 向圖像中寫入干擾線條 
  113. */ 
  114. protected function _Write_Line() { //生成干擾線條 
  115. for ($i=0;$i < $this -> Line;$i++) { 
  116. $Color = imagecolorallocate($this -> _Img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); 
  117. imageline($this -> _Img,mt_rand(0,$this -> Width),mt_rand(0,$this -> Height),mt_rand(0,$this -> Width),mt_rand(0,$this -> Height),$Color); 
  118.  
  119. /** 
  120. * 設置圖像類型為JPEG 
  121. */ 
  122. protected function _Img_Jpeg(){ 
  123. header('Content-type:image/jpeg'); 
  124. imagejpeg($this -> _Img); 
  125. imagedestroy($this -> _Img); 
  126.  
  127. /** 
  128. * 設置圖像類型為PNG 
  129. */ 
  130. protected function _Img_Png(){ 
  131. header('Content-type:image/png'); 
  132. imagepng($this -> _Img); 
  133. imagedestroy($this -> _Img); 
  134.  
  135. /** 
  136. * 創建JPEG的字符串圖像 
  137. */ 
  138. public function Create_Img_Jpg(){ 
  139. $this -> _Create_Img_GB(True); 
  140. $this -> _Write_Text(); 
  141. $this -> _Img_Jpeg(); 
  142.  
  143. /** 
  144. * 創建PNG的字符串圖像 
  145. */ 
  146. public function Create_Img_Png(){ 
  147. $this -> _Create_Img_GB(True); 
  148. $this -> _Write_Text(); 
  149. $this -> _Img_Png(); 
  150.  
  151. /** 
  152. * 創建驗證碼的PNG圖像 
  153. */ 
  154. public function Create_Verify(){ 
  155. $this -> BackgroundColor = ''
  156. for($I = 0;$I < 3;$I++){ 
  157. $this -> BackgroundColor .= dechex(mt_rand(20,155)); 
  158. $this -> _Create_Img_GB(True); 
  159. $this -> _Create_Code(); 
  160. $this -> _Write_Line(); 
  161. $this -> _Write_Code(); 
  162. $this -> _Img_Png(); 
  163.  
  164. /** 
  165. * 外部獲取MD5加密后的驗證碼 
  166. * @return string 
  167. */ 
  168. public function Get_Verify(){ 
  169. return md5($this -> _Code); 
  170.  
  171. /** 
  172. * 加載一個圖像文件,并獲取圖像相關信息 
  173. * @param string $FilePath 圖像相對路徑地址 
  174. * @return $this|bool 成功返回對象,否則返回FALSE 
  175. */ 
  176. public function Load_Img($FilePath){ 
  177. $FilePath = __WEBROOT__.$FilePath
  178. if(!is_file($FilePath)){ 
  179. $this -> LoadErr = "路徑錯誤,文件不存在"
  180. Return False; 
  181. $this -> _PicInfo = getimagesize($FilePath); 
  182. $this -> _FileInfo = pathinfo($FilePath); 
  183. switch($this -> _PicInfo[2]){ 
  184. case 1:$this ->_FileImg = imagecreatefromgif($FilePath);break
  185. case 2:$this ->_FileImg = imagecreatefromjpeg($FilePath);break
  186. case 3:$this ->_FileImg = imagecreatefrompng($FilePath);break
  187. default:$this -> LoadErr = "類型錯誤,不支持的圖片類型";Return False; 
  188. Return True; 
  189.  
  190. /** 
  191. * 創建縮略圖 
  192. * @param string $FileName 保存的圖片名稱前綴 
  193. * @param string $FilePath 保存圖片的相對路徑 
  194. * @return mixed 返回生成的圖片的信息數組 
  195. */ 
  196. public function Create_Thumb($FileName,$FilePath){ 
  197. $SavePath = __WEBROOT__.$FilePath
  198. if(!file_exists($SavePath)){ 
  199. mkdir($SavePath,0777,true); 
  200. $FileName = $FileName.date("YmdHis").rand(100,999).'.'.$this -> _FileInfo['extension']; 
  201. $FilePath = $FilePath.$FileName
  202. $SavePath = $SavePath.$FileName
  203. $this -> _Create_Img_GB(False); 
  204. imagecopyresampled($this -> _Img,$this -> _FileImg,0,0,0,0,$this -> Width,$this -> Height,$this -> _PicInfo[0],$this -> _PicInfo[1]); 
  205. switch($this -> _PicInfo[2]){ 
  206. case 1:imagegif($this -> _Img,$SavePath);break
  207. case 2:imagejpeg($this -> _Img,$SavePath);break
  208. case 3:imagepng($this -> _Img,$SavePath);break
  209. $FIleInfo['FileName'] = $FileName
  210. $FIleInfo['FilePath'] = $FilePath
  211. Return $FIleInfo

使用示例

 

 
  1. $Img = new Img(); 
  2.  
  3. $Options['Width'] = 300; 
  4. $Options['Height'] = 100; 
  5. $Options['Content'] = "Test Create Img"
  6. $Options['FontColor'] = "FF0000"
  7. $Options['BackgroundColor'] = "AAAAAA"
  8. $Img -> Style($Options) -> Create_Img_Jpg(); 
  9.  
  10. if($Img -> Load_Img("/Public/images/ad1.png")){ 
  11. $FileInfo = $Img -> Style(array('Width'=>30,'Height'=>30)) -> Create_Thumb("Thumb","/Uploads/images/"); 
  12. var_dump($FileInfo); 
  13. }else
  14. die("加載圖像失敗,".$Img -> LoadErr); 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频二区| 亚洲国产精品资源| 97婷婷涩涩精品一区| 98午夜经典影视| 精品无人区乱码1区2区3区在线| 国产精品亚洲аv天堂网| 91av中文字幕| 成人免费xxxxx在线观看| 欧美精品video| 国外成人在线直播| 亚洲性69xxxbbb| 中文在线资源观看视频网站免费不卡| 欧美日韩国产精品一区二区三区四区| 丝袜美腿精品国产二区| 91在线视频成人| 久久久精品一区| 久久综合伊人77777尤物| www.99久久热国产日韩欧美.com| 国产精品久久99久久| 国外成人免费在线播放| 欧美在线观看视频| 日韩69视频在线观看| 成人性生交xxxxx网站| 久久国产精品视频| 成人国产精品久久久久久亚洲| 久久九九国产精品怡红院| 亚洲第一福利视频| 69影院欧美专区视频| 欧美激情在线有限公司| 日韩www在线| 91社区国产高清| 国产午夜精品全部视频播放| 2021久久精品国产99国产精品| 国内精品久久久久伊人av| www国产精品com| 亚洲天堂av在线免费观看| 97人洗澡人人免费公开视频碰碰碰| 日韩日本欧美亚洲| 在线观看亚洲视频| 欧美大片免费看| 精品视频久久久久久久| 夜夜嗨av一区二区三区免费区| 6080yy精品一区二区三区| 亚洲成人a**站| 国内外成人免费激情在线视频| 亚洲精品美女久久久| 国产成人精品久久二区二区91| 日韩有码在线播放| 精品久久久久久电影| 91在线视频精品| 国产成人精品免高潮费视频| 国产成人97精品免费看片| 韩国欧美亚洲国产| 欧美日韩裸体免费视频| 91香蕉亚洲精品| 国语自产在线不卡| 性欧美视频videos6一9| 最近2019免费中文字幕视频三| 国产日韩av在线播放| 日本精品va在线观看| 美日韩丰满少妇在线观看| 欧美大肥婆大肥bbbbb| 91大神福利视频在线| 中文字幕日韩欧美在线视频| 欧美黑人一区二区三区| 国产精品1区2区在线观看| 亚洲激情视频在线播放| 国产综合香蕉五月婷在线| 亚洲美女动态图120秒| 国内揄拍国内精品少妇国语| 精品欧美一区二区三区| 久久精品国产成人| 亚洲美女性生活视频| 日韩第一页在线| 欧美亚洲日本网站| 久久久www成人免费精品张筱雨| 色妞在线综合亚洲欧美| 成人在线免费观看视视频| 亚洲综合精品一区二区| 成人精品aaaa网站| 欧美黑人一区二区三区| 欧美疯狂做受xxxx高潮| 欧美日韩国产麻豆| 97精品免费视频| 日韩欧美在线观看视频| 久久久91精品国产| 亚洲国产福利在线| 日韩av免费在线看| 亚洲第一区第一页| 尤物九九久久国产精品的特点| 亚洲色图狂野欧美| 日韩美女在线观看一区| 欧美午夜视频一区二区| 中文字幕精品一区二区精品| 北条麻妃久久精品| 久久久综合免费视频| 美女少妇精品视频| 操人视频在线观看欧美| 奇米一区二区三区四区久久| 国产精品99久久久久久白浆小说| 在线观看免费高清视频97| 亚洲最大成人免费视频| 国产女同一区二区| 91精品国产自产在线| 欧美二区乱c黑人| 亚洲欧美成人一区二区在线电影| 欧美成人午夜激情视频| 国产亚洲精品久久久久久777| 在线观看国产精品淫| 亚洲精品美女在线观看播放| 91久久久久久久久| 国产98色在线| 57pao国产精品一区| 欧美日韩ab片| 成人久久久久久久| 亚洲欧美日韩国产中文专区| 一区二区欧美久久| 国产女同一区二区| 国产免费成人av| 久久久久久高潮国产精品视| 日韩欧美在线视频| 日韩av不卡电影| 国产精品96久久久久久| 55夜色66夜色国产精品视频| 亚洲最大福利视频网站| 久久精品99久久久香蕉| 久久精品亚洲一区| 97久久伊人激情网| 国产91在线高潮白浆在线观看| 久久久久这里只有精品| 国产剧情日韩欧美| 日韩欧美国产成人| 欧美高清电影在线看| 国产亚洲欧洲高清| 欧美性资源免费| 狠狠躁天天躁日日躁欧美| 高清日韩电视剧大全免费播放在线观看| 欧美日韩一区二区三区在线免费观看| 在线观看日韩专区| 最近的2019中文字幕免费一页| 久久久视频在线| 成人午夜在线影院| 在线精品国产成人综合| 日韩三级影视基地| 久久中文久久字幕| 怡红院精品视频| 清纯唯美亚洲综合| 在线免费观看羞羞视频一区二区| 黑人精品xxx一区一二区| 久久久久久高潮国产精品视| 在线视频欧美日韩精品| 亚洲最大的免费| 97视频免费看| 国产精品久久久久久久电影| 午夜欧美大片免费观看| 精品久久久av| 欧美在线影院在线视频| 国外成人在线直播| 国产视频亚洲视频| 亚洲白拍色综合图区| 国产亚洲欧美另类中文| 日韩免费观看视频| 国产精品一区二区久久久| 国产精品va在线播放我和闺蜜|