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

首頁 > 開發 > PHP > 正文

摘自織夢CMS中的圖片處理類

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

這篇文章主要介紹了摘自織夢CMS中的圖片處理類,通過面向對象的方式較為詳細的實現了php針對圖片的縮略圖生成及水印添加等操作技巧,非常具有實用價值,需要的朋友可以參考下

本文實例講述了摘自織夢CMS中的圖片處理類。分享給大家供大家參考。具體如下:

 

 
  1. <?php if(!defined('DEDEINC')) exit('dedecms'); 
  2. /** 
  3. * 圖像處理類 
  4. * 
  5. * @version $Id: image.class.php 1 18:10 2010年7月5日Z tianya $ 
  6. * @package DedeCMS.Libraries 
  7. * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. 
  8. * @license http://help.dedecms.com/usersguide/license.html 
  9. * @link http://www.dedecms.com 
  10. */ 
  11. class image 
  12. var $attachinfo
  13. var $targetfile//圖片路徑 
  14. var $imagecreatefromfunc
  15. var $imagefunc
  16. var $attach
  17. var $animatedgif
  18. var $watermarkquality
  19. var $watermarktext
  20. var $thumbstatus
  21. var $watermarkstatus
  22. // 析構函數,兼容PHP4 
  23. function image($targetfile$cfg_thumb$cfg_watermarktext$photo_waterpos$photo_diaphaneity$photo_wheight$photo_wwidth$cfg_watermarktype$photo_marktrans,$trueMarkimg$attach = array()) 
  24. $this->__construct($targetfile$cfg_thumb$cfg_watermarktext$photo_waterpos$photo_diaphaneity$photo_wheight$photo_wwidth$cfg_watermarktype$photo_marktrans,$trueMarkimg$attach); 
  25. // 析構函數 
  26. function __construct($targetfile$cfg_thumb$cfg_watermarktext$photo_waterpos$photo_diaphaneity$photo_wheight$photo_wwidth$cfg_watermarktype$photo_marktrans,$trueMarkimg$attach = array()) 
  27. $this->thumbstatus = $cfg_thumb
  28. $this->watermarktext = $cfg_watermarktext
  29. $this->watermarkstatus = $photo_waterpos
  30. $this->watermarkquality = $photo_marktrans
  31. $this->watermarkminwidth = $photo_wwidth
  32. $this->watermarkminheight = $photo_wheight
  33. $this->watermarktype = $cfg_watermarktype
  34. $this->watermarktrans = $photo_diaphaneity
  35. $this->animatedgif = 0; 
  36. $this->targetfile = $targetfile
  37. $this->attachinfo = @getimagesize($targetfile); 
  38. $this->attach = $attach
  39. switch($this->attachinfo['mime']) 
  40. case 'image/jpeg'
  41. $this->imagecreatefromfunc = function_exists('imagecreatefromjpeg') ? 'imagecreatefromjpeg' : ''
  42. $this->imagefunc = function_exists('imagejpeg') ? 'imagejpeg' : ''
  43. break
  44. case 'image/gif'
  45. $this->imagecreatefromfunc = function_exists('imagecreatefromgif') ? 'imagecreatefromgif' : ''
  46. $this->imagefunc = function_exists('imagegif') ? 'imagegif' : ''
  47. break
  48. case 'image/png'
  49. $this->imagecreatefromfunc = function_exists('imagecreatefrompng') ? 'imagecreatefrompng' : ''
  50. $this->imagefunc = function_exists('imagepng') ? 'imagepng' : ''
  51. break
  52. }//為空則匹配類型的函數不存在 
  53. $this->attach['size'] = emptyempty($this->attach['size']) ? @filesize($targetfile) : $this->attach['size']; 
  54. if($this->attachinfo['mime'] == 'image/gif'
  55. $fp = fopen($targetfile'rb'); 
  56. $targetfilecontent = fread($fp$this->attach['size']); 
  57. fclose($fp); 
  58. $this->animatedgif = strpos($targetfilecontent'NETSCAPE2.0') === false ? 0 : 1; 
  59. /** 
  60. * 生成縮略圖 
  61. * 
  62. * @access public 
  63. * @param int $thumbwidth 圖片寬度 
  64. * @param int $thumbheight 圖片高度 
  65. * @param int $preview 是否預覽 
  66. * @return void 
  67. */ 
  68. function thumb($thumbwidth$thumbheight$preview = 0) 
  69. $this->thumb_gd($thumbwidth$thumbheight$preview); 
  70.  
  71. if($this->thumbstatus == 2 && $this->watermarkstatus) 
  72. $this->image($this->targetfile, $this->attach); 
  73. $this->attach['size'] = filesize($this->targetfile); 
  74. /** 
  75. * 圖片水印 
  76. * 
  77. * @access public 
  78. * @param int $preview 是否預覽 
  79. * @return void 
  80. */ 
  81. function watermark($preview = 0) 
  82. if($this->watermarkminwidth && $this->attachinfo[0] <= $this->watermarkminwidth && $this->watermarkminheight && $this->attachinfo[1] <= $this->watermarkminheight) 
  83. return ; 
  84. $this->watermark_gd($preview); 
  85. /** 
  86. * 使用gd生成縮略圖 
  87. * 
  88. * @access public 
  89. * @param int $thumbwidth 圖片寬度 
  90. * @param int $thumbheight 圖片高度 
  91. * @param int $preview 是否預覽 
  92. * @return void 
  93. */ 
  94. function thumb_gd($thumbwidth$thumbheight$preview = 0) 
  95. if($this->thumbstatus && function_exists('imagecreatetruecolor') && function_exists('imagecopyresampled') && function_exists('imagejpeg')) 
  96. $imagecreatefromfunc = $this->imagecreatefromfunc; 
  97. $imagefunc = $this->thumbstatus == 1 ? 'imagejpeg' : $this->imagefunc; 
  98. list($imagewidth$imageheight) = $this->attachinfo; 
  99. if(!$this->animatedgif && ($imagewidth >= $thumbwidth || $imageheight >= $thumbheight)) 
  100. $attach_photo = $imagecreatefromfunc($this->targetfile); 
  101. $x_ratio = $thumbwidth / $imagewidth
  102. $y_ratio = $thumbheight / $imageheight
  103. if(($x_ratio * $imageheight) < $thumbheight
  104. $thumb['height'] = ceil($x_ratio * $imageheight); 
  105. $thumb['width'] = $thumbwidth
  106. else 
  107. $thumb['width'] = ceil($y_ratio * $imagewidth); 
  108. $thumb['height'] = $thumbheight
  109. $targetfile = !$preview ? ($this->thumbstatus == 1 ? $this->targetfile.'.thumb.jpg' : $this->targetfile) : './watermark_tmp.jpg'
  110. $thumb_photo = imagecreatetruecolor($thumb['width'], $thumb['height']); 
  111. imagecopyresampled($thumb_photo$attach_photo, 0, 0, 0, 0, $thumb['width'], $thumb['height'], $imagewidth$imageheight); 
  112. if($this->attachinfo['mime'] == 'image/jpeg'
  113. $imagefunc($thumb_photo$targetfile, 100); 
  114. else 
  115. $imagefunc($thumb_photo$targetfile); 
  116. $this->attach['thumb'] = $this->thumbstatus == 1 ? 1 : 0; 
  117. /** 
  118. * 使用gd進行水印 
  119. * 
  120. * @access public 
  121. * @param int $preview 是否預覽 
  122. * @return void 
  123. */ 
  124. function watermark_gd($preview = 0) 
  125. if($this->watermarkstatus && function_exists('imagecopy') && function_exists('imagealphablending') && function_exists('imagecopymerge')) 
  126. $imagecreatefunc = $this->imagecreatefromfunc; 
  127. $imagefunc = $this->imagefunc; 
  128. list($imagewidth$imageheight) = $this->attachinfo; 
  129. if($this->watermarktype < 2) 
  130. $watermark_file = $this->watermarktype == 1 ? DEDEDATA.'/mark/mark.png' : DEDEDATA.'/mark/mark.gif'
  131. $watermarkinfo = @getimagesize($watermark_file); 
  132. $watermark_logo = $this->watermarktype == 1 ? @imagecreatefrompng($watermark_file) : @imagecreatefromgif($watermark_file); 
  133. if(!$watermark_logo
  134. return ; 
  135. list($logowidth$logoheight) = $watermarkinfo
  136. else 
  137. $box = @imagettfbbox($this->watermarktext['size'], $this->watermarktext['angle'], $this->watermarktext['fontpath'],$this->watermarktext['text']); 
  138. $logowidth = max($box[2], $box[4]) - min($box[0], $box[6]); 
  139. $logoheight = max($box[1], $box[3]) - min($box[5], $box[7]); 
  140. $ax = min($box[0], $box[6]) * -1; 
  141. $ay = min($box[5], $box[7]) * -1; 
  142. $wmwidth = $imagewidth - $logowidth
  143. $wmheight = $imageheight - $logoheight
  144. if(($this->watermarktype < 2 && is_readable($watermark_file) || $this->watermarktype == 2) && $wmwidth > 10 && $wmheight > 10 && !$this->animatedgif) 
  145. switch($this->watermarkstatus) 
  146. case 1: 
  147.  
  148. $x = +5; 
  149. $y = +5; 
  150. break
  151. case 2: 
  152. $x = ($imagewidth - $logowidth) / 2; 
  153. $y = +5; 
  154. break
  155. case 3: 
  156. $x = $imagewidth - $logowidth - 5; 
  157. $y = +5; 
  158. break
  159. case 4: 
  160. $x = +5; 
  161. $y = ($imageheight - $logoheight) / 2; 
  162. break
  163. case 5: 
  164. $x = ($imagewidth - $logowidth) / 2; 
  165. $y = ($imageheight - $logoheight) / 2; 
  166. break
  167. case 6: 
  168. $x = $imagewidth - $logowidth - 5; 
  169. $y = ($imageheight - $logoheight) / 2; 
  170. break
  171. case 7: 
  172. $x = +5; 
  173. $y = $imageheight - $logoheight - 5; 
  174. break
  175. case 8: 
  176. $x = ($imagewidth - $logowidth) / 2; 
  177. $y = $imageheight - $logoheight - 5; 
  178. break
  179. case 9: 
  180. $x = $imagewidth - $logowidth - 5; 
  181. $y = $imageheight - $logoheight -5; 
  182. break
  183. $dst_photo = @imagecreatetruecolor($imagewidth$imageheight); 
  184. $target_photo = $imagecreatefunc($this->targetfile); 
  185. imagecopy($dst_photo$target_photo, 0, 0, 0, 0, $imagewidth$imageheight); 
  186. if($this->watermarktype == 1) 
  187. imagecopy($dst_photo$watermark_logo$x$y, 0, 0, $logowidth$logoheight); 
  188. elseif($this->watermarktype == 2) 
  189. if(($this->watermarktext['shadowx'] || $this->watermarktext['shadowy']) && $this->watermarktext['shadowcolor']) 
  190. $shadowcolorrgb = explode(','$this->watermarktext['shadowcolor']); 
  191. $shadowcolor = imagecolorallocate($dst_photo$shadowcolorrgb[0], $shadowcolorrgb[1], $shadowcolorrgb[2]); 
  192. imagettftext($dst_photo$this->watermarktext['size'], $this->watermarktext['angle'], 
  193. $x + $ax + $this->watermarktext['shadowx'], $y + $ay + $this->watermarktext['shadowy'], $shadowcolor
  194. $this->watermarktext['fontpath'], $this->watermarktext['text']); 
  195. $colorrgb = explode(','$this->watermarktext['color']); 
  196. $color = imagecolorallocate($dst_photo$colorrgb[0], $colorrgb[1], $colorrgb[2]); 
  197. imagettftext($dst_photo$this->watermarktext['size'], $this->watermarktext['angle'], 
  198. $x + $ax$y + $ay$color$this->watermarktext['fontpath'], $this->watermarktext['text']); 
  199. else 
  200. imagealphablending($watermark_logo, true); 
  201. imagecopymerge($dst_photo$watermark_logo$x$y, 0, 0, $logowidth$logoheight$this->watermarktrans); 
  202. $targetfile = !$preview ? $this->targetfile : './watermark_tmp.jpg'
  203. if($this->attachinfo['mime'] == 'image/jpeg'
  204. $imagefunc($dst_photo$targetfile$this->watermarkquality); 
  205. else 
  206. $imagefunc($dst_photo$targetfile); 
  207. $this->attach['size'] = filesize($this->targetfile); 
  208. }//End Class 

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲xxx大片| 欧美激情影音先锋| 性亚洲最疯狂xxxx高清| 久久久久久成人| 亚洲天堂视频在线观看| 国产精品高清免费在线观看| 欧美日韩精品中文字幕| 亚洲成色www8888| 亚洲国产日韩欧美在线图片| 亚洲天堂久久av| 亚洲国产精品99| 国产精品99久久久久久久久| 亚洲人午夜色婷婷| 欧美精品一区二区三区国产精品| 日韩成人在线免费观看| 欧美一级视频在线观看| 色综合伊人色综合网站| 中文字幕亚洲综合| 国产综合在线看| 亚洲aⅴ男人的天堂在线观看| 国产精品r级在线| 岛国精品视频在线播放| 国产精品大片wwwwww| 国产午夜精品麻豆| 国产剧情日韩欧美| 9.1国产丝袜在线观看| 久久久国产一区二区三区| 91精品视频一区| 国产精品免费一区二区三区都可以| 成人精品在线视频| 国产精品美女主播在线观看纯欲| 亚洲成年人在线| 欧美激情一区二区三区成人| 欧美成人黄色小视频| 色婷婷综合久久久久中文字幕1| 日本一区二区三区四区视频| 国产91精品久久久| 97精品伊人久久久大香线蕉| 狠狠躁夜夜躁久久躁别揉| 欧美在线视频a| 亚洲国产美女精品久久久久∴| 欧美激情亚洲另类| 91国自产精品中文字幕亚洲| 中文字幕视频在线免费欧美日韩综合在线看| 国产日韩在线观看av| 亚洲最大福利网| 高跟丝袜一区二区三区| 91日本视频在线| 国产精品爽爽爽爽爽爽在线观看| 精品无人区乱码1区2区3区在线| 欧美精品情趣视频| 国产精品香蕉av| 精品亚洲va在线va天堂资源站| 亚洲精品中文字幕女同| 国产视频在线一区二区| 国产欧美一区二区三区四区| 综合激情国产一区| 亚洲国产精品久久久久久| 日韩欧美在线观看| 精品福利免费观看| 日韩成人小视频| 成人黄色短视频在线观看| 久久国内精品一国内精品| 日本精品在线视频| 亚洲视频专区在线| 亚洲无av在线中文字幕| 欧美高清视频在线| 92看片淫黄大片欧美看国产片| 亚洲精品日韩在线| 亚洲毛片在线观看| 欧美一区二区三区……| 欧美高清电影在线看| 亚洲老头同性xxxxx| 成人乱人伦精品视频在线观看| 91在线直播亚洲| 久久综合免费视频影院| 亚洲精品美女免费| 欧美电影第一页| 日韩在线观看高清| 久久人91精品久久久久久不卡| 91在线观看免费高清完整版在线观看| 91中文精品字幕在线视频| 亚洲女人天堂av| 亚洲视频免费一区| 日韩电影免费观看中文字幕| 国产精品视频免费观看www| 疯狂做受xxxx高潮欧美日本| 26uuu另类亚洲欧美日本老年| 国产啪精品视频网站| 亚洲一区二区三区香蕉| 国产91精品不卡视频| 国产免费亚洲高清| 欧美大尺度电影在线观看| 国产精品美女呻吟| 国产成人精品免费久久久久| 美女福利精品视频| 精品色蜜蜜精品视频在线观看| 欧美激情视频播放| 久久亚洲精品一区| 欧美日本高清一区| 91久久国产精品91久久性色| www国产精品视频| 91色在线视频| 在线国产精品视频| 精品一区精品二区| 国产精品91在线观看| 成人激情在线播放| 日韩精品在线观看视频| 精品色蜜蜜精品视频在线观看| 国产精品都在这里| 中文字幕亚洲欧美一区二区三区| 国产精品视频内| 久99九色视频在线观看| 日韩欧美国产成人| 欧美视频裸体精品| 日本在线观看天堂男亚洲| 奇米影视亚洲狠狠色| 国产精品aaaa| 久久久最新网址| 国模极品一区二区三区| 国产97色在线| 亚洲免费一级电影| 这里只有精品在线播放| 日韩av综合中文字幕| 久久精品国产成人| 久久91精品国产| 日韩av网站电影| 亚洲欧美日韩区| 亚洲在线观看视频网站| 欧美日韩免费区域视频在线观看| 亚洲国产美女久久久久| 亚洲伊人第一页| 欧美性猛交xxxx免费看漫画| 欧美电影第一页| 日韩电影网在线| 精品国产美女在线| 国产精品视频不卡| 日本欧美中文字幕| 久久精品电影网| 久久久久久久香蕉网| 国产日韩在线播放| 亚洲无限乱码一二三四麻| 亚洲美女在线视频| 亚洲自拍小视频免费观看| 97视频在线观看视频免费视频| 国产91在线播放| 久久视频在线直播| 国产精品www| 丁香五六月婷婷久久激情| 国产一区玩具在线观看| 日韩在线视频网| 亚洲欧美日韩国产精品| 亚洲欧美国产日韩天堂区| 91av国产在线| 在线观看视频99| 91九色国产社区在线观看| 在线观看欧美www| 国产亚洲人成a一在线v站| 一区二区欧美久久| 久久人人爽人人爽人人片av高请| 色一情一乱一区二区| 最新91在线视频| 在线播放精品一区二区三区| 91禁外国网站|