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

首頁 > 語言 > PHP > 正文

ckeditor上傳文件重命名并加水印配置方法

2024-09-04 11:44:45
字體:
來源:轉載
供稿:網友

首先:我希望上傳的文件根據日期來組織文件夾,請修改editoreditorfilemanagerconnectorsphp文件夾下的config.php文件,找到如下的內容:

  1. //Path to user files relative to the document root. 
  2. $Config['UserFilesPath'] = 

修改為:

  1. //Path to user files relative to the document root. 
  2. $Config['UserFilesPath'] = '/uploadfiles/'.date("Ym")."/" ; 

這樣上傳的文件就按照日期存放了,其次,重命名,請修改該文件夾下的io.php文件,找到如下代碼:

  1. // Do a cleanup of the file name to avoid possible problems 
  2. function SanitizeFileName( $sNewFileName ) 
  3. global $Config ; 
  4. $sNewFileName = stripslashes$sNewFileName ) ; 
  5. // Replace dots in the name with underscores (only one dot can be there... security issue). 
  6. if ( $Config['ForceSingleExtension'] ) 
  7.  $sNewFileName = preg_replace( '//.(?![^.]*$)/''_'$sNewFileName ) ; 
  8. // Remove / | : ? * " < > 
  9. $sNewFileName = preg_replace( '///|//|/||/:|/?|/*|"|<|>/''_'$sNewFileName ); 
  10. return $sNewFileName ; 

修改為如下代碼:

  1. // Do a cleanup of the file name to avoid possible problems 
  2. function SanitizeFileName( $sNewFileName ) 
  3. global $Config ; 
  4. $sNewFileName = stripslashes$sNewFileName ) ; 
  5. // Replace dots in the name with underscores (only one dot can be there... security issue). 
  6. if ( $Config['ForceSingleExtension'] ) 
  7.  $sNewFileName = preg_replace( '//.(?![^.]*$)/''_'$sNewFileName ) ; 
  8. $sExtension = substr$sNewFileName, ( strrpos($sNewFileName'.') + 1 ) ) ; 
  9. $sNewFileName = my_setfilename().'.'.$sExtension
  10. return $sNewFileName ; 
  11. function my_setfilename(){ 
  12. $gettime = explode(' ',microtime()); 
  13. $string = 'abcdefghijklmnopgrstuvwxyz0123456789'
  14. $rand = ''
  15. for ($x=0;$x<12;$x++) 
  16.  $rand .= substr($string,mt_rand(0,strlen($string)-1),1); 
  17. return date("ymdHis").substr($gettime[0],2,6).$rand

Fckeditor上傳圖片文件名重名及中文亂碼解決方法

經測試Fckeditor2.6.6并沒有解決上傳文件中文名變為亂碼的問題,這是由于Fckeditor實現上傳功能時并沒有將文件重命名,容易導致上傳圖片文件重名及亂碼問題。

上傳圖片文件重名和亂碼解決方法如下

打開editor/filemanager/connectors/php目錄下commands.php,找到FileUpload函數,在

  1. $sExtension = substr$sFileName, ( strrpos($sFileName'.') + 1 ) ) ; 
  2. $sExtension = strtolower$sExtension ) ; 
  3.  

后添加

$sFileName = rand(0,100).".".$sExtension;,此處rand函數可根據需要自行改變重命名規則。

另一種上傳圖片文件名亂碼解決方法為使用iconv函數對文件名進行編碼轉換,但仍然存在重名問題,所以針對Fckeditor上傳圖片文件名最好還是重命名。

Fckeditor上傳圖片添加水印功能

對于網站擁有者來說保護圖片版權添加水印必不可少,我們可以利用PHP添加水印函數結合Fckeditor文件上傳函數FileUpload實現圖片添加水印功能,水印函數請參考PHP圖片水印函數:支持以圖片和文字方式添加水印一文,代碼如下:

  1. function setWater($imgSrc,$markImg,$markText,$TextColor,$markPos,$fontType,$markType
  2.     $srcInfo = @getimagesize($imgSrc); 
  3.     $srcImg_w    = $srcInfo[0]; 
  4.     $srcImg_h    = $srcInfo[1]; 
  5.          
  6.     switch ($srcInfo[2])  
  7.     {  
  8.         case 1:  
  9.             $srcim =imagecreatefromgif($imgSrc);  
  10.             break;  
  11.         case 2:  
  12.             $srcim =imagecreatefromjpeg($imgSrc);  
  13.             break;  
  14.         case 3:  
  15.             $srcim =imagecreatefrompng($imgSrc);  
  16.             break;  
  17.         default:  
  18.             die("不支持的圖片文件類型");  
  19.             exit;  
  20.     } 
  21.          
  22.     if(!strcmp($markType,"img")) 
  23.     { 
  24.         if(!file_exists($markImg) || emptyempty($markImg)) 
  25.         { 
  26.             return
  27.         } 
  28.              
  29.         $markImgInfo = @getimagesize($markImg); 
  30.         $markImg_w    = $markImgInfo[0]; 
  31.         $markImg_h    = $markImgInfo[1]; 
  32.              
  33.         if($srcImg_w < $markImg_w || $srcImg_h < $markImg_h
  34.         { 
  35.             return
  36.         } 
  37.              
  38.         switch ($markImgInfo[2])  
  39.         {  
  40.             case 1:  
  41.                 $markim =imagecreatefromgif($markImg);  
  42.                 break;  
  43.             case 2:  
  44.                 $markim =imagecreatefromjpeg($markImg);  
  45.                 break;  
  46.             case 3:  
  47.                 $markim =imagecreatefrompng($markImg);  
  48.                 break;  
  49.             default:  
  50.                 die("不支持的水印圖片文件類型");  
  51.                 exit;  
  52.         } 
  53.              
  54.         $logow = $markImg_w
  55.         $logoh = $markImg_h
  56.     } 
  57.          
  58.     if(!strcmp($markType,"text")) 
  59.     { 
  60.         $fontSize = 16; 
  61.         if(!emptyempty($markText)) 
  62.         { 
  63.             if(!file_exists($fontType)) 
  64.             { 
  65.                 return
  66.             } 
  67.         } 
  68.         else { 
  69.             return
  70.         } 
  71.              
  72.         $box = @imagettfbbox($fontSize, 0, $fontType,$markText); 
  73.         $logow = max($box[2], $box[4]) - min($box[0], $box[6]); 
  74.         $logoh = max($box[1], $box[3]) - min($box[5], $box[7]); 
  75.     } 
  76.          
  77.     if($markPos == 0) 
  78.     { 
  79.         $markPos = rand(1, 9); 
  80.     } 
  81.          
  82.     switch($markPos
  83.     { 
  84.         case 1: 
  85.             $x = +5; 
  86.             $y = +5; 
  87.             break
  88.         case 2: 
  89.             $x = ($srcImg_w - $logow) / 2; 
  90.             $y = +5; 
  91.             break
  92.         case 3: 
  93.             $x = $srcImg_w - $logow - 5; 
  94.             $y = +15; 
  95.             break
  96.         case 4: 
  97.             $x = +5; 
  98.             $y = ($srcImg_h - $logoh) / 2; 
  99.             break
  100.         case 5: 
  101.             $x = ($srcImg_w - $logow) / 2; 
  102.             $y = ($srcImg_h - $logoh) / 2; 
  103.             break
  104.         case 6: 
  105.             $x = $srcImg_w - $logow - 5; 
  106.             $y = ($srcImg_h - $logoh) / 2; 
  107.             break
  108.         case 7: 
  109.             $x = +5; 
  110.             $y = $srcImg_h - $logoh - 5; 
  111.             break
  112.         case 8: 
  113.             $x = ($srcImg_w - $logow) / 2; 
  114.             $y = $srcImg_h - $logoh - 5; 
  115.             break
  116.         case 9: 
  117.             $x = $srcImg_w - $logow - 5; 
  118.             $y = $srcImg_h - $logoh -5; 
  119.             break
  120.         default:  
  121.             die("此位置不支持");  
  122.             exit
  123.     } 
  124.          
  125.     $dst_img = @imagecreatetruecolor($srcImg_w$srcImg_h); 
  126.          
  127.     imagecopy ( $dst_img$srcim, 0, 0, 0, 0, $srcImg_w$srcImg_h); 
  128.          
  129.     if(!strcmp($markType,"img")) 
  130.     { 
  131.         imagecopy($dst_img$markim$x$y, 0, 0, $logow$logoh); 
  132.         imagedestroy($markim); 
  133.     } 
  134.          
  135.     if(!strcmp($markType,"text")) 
  136.     { 
  137.         $rgb = explode(','$TextColor); 
  138.              
  139.         $color = imagecolorallocate($dst_img$rgb[0], $rgb[1], $rgb[2]); 
  140.         imagettftext($dst_img$fontSize, 0, $x$y$color$fontType,$markText); 
  141.     } 
  142.          
  143.     switch ($srcInfo[2])  
  144.     {  
  145.         case 1: 
  146.             imagegif($dst_img$imgSrc);  
  147.             break;  
  148.         case 2:  
  149.             imagejpeg($dst_img$imgSrc);  
  150.             break;  
  151.         case 3:  
  152.             imagepng($dst_img$imgSrc);  
  153.             break
  154.         default:  
  155.             die("不支持的水印圖片文件類型");  
  156.             exit;  
  157.     } 
  158.          
  159.     imagedestroy($dst_img); 
  160.     imagedestroy($srcim); 

$imgSrc:目標圖片,可帶相對目錄地址,

$markImg:水印圖片,可帶相對目錄地址,支持PNG和GIF兩種格式,如水印圖片在執行文件mark目錄下,可寫成:mark/mark.gif

$markText:給圖片添加的水印文字

$TextColor:水印文字的字體顏色

$markPos:圖片水印添加的位置,取值范圍:0~9

0:隨機位置,在1~8之間隨機選取一個位置

1:頂部居左 2:頂部居中 3:頂部居右 4:左邊居中

5:圖片中心 6:右邊居中 7:底部居左 8:底部居中 9:底部居右

$fontType:具體的字體庫,可帶相對目錄地址

$markType:圖片添加水印的方式,img代表以圖片方式,text代表以文字方式添加水印

代碼注釋:

第4~6行:獲取目標圖片的寬度和高度

第8~22行:根據圖片類型調用不同的函數,獲得操作圖像標識符

GetImageSize函數知識點:GetImageSize不需要安裝 GD度就可使用,其返回值數組有四個元素。索引值0是圖片高度。索引值1是圖片的寬度。索引值2是圖片的文件格式,其值1為GIF格式、2為JPEG/JPG格式、3為PNG格式。索引值3為圖片的高與寬字符串,height=xxx width=yyy。返回的圖片寬度和高度單位都是像素(pixel)

第24~58行:當選擇圖片方式給目標圖片添加水印時,獲取水印圖片的寬度和高度,通常情況都是網站的logo。如果目標圖片比水印圖片寬度或者高度小或者水印圖片不存在,則跳出這個函數。

return語句知識點:直接return 表示什么都不返回,直接結束這個函數。也可以理解成返回 NULL。

第60~77行:當選擇文字方式給目標圖片添加水印時,首先設定水印文字的大小,默認我設置為16px,你可以根據需要自行調整字體大小。如果字體文件不存在,跳出函數,最后通過imagettfbbox函數獲得此設定格式的文字的虛擬長寬。

imagettfbbox函數知識點:此函數返回一個含有8個單元的數組表示文本外框的四個角,索引值含義:0代表左下角 X 位置,1代表坐下角 Y 位置,2代表右下角 X 位置,3代表右下角 Y 位置,4代表右上角 X 位置,5代表右上角 Y 位置,6代表左上角 X 位置,7代表左上角 Y 位置。此函數同時需要GD 庫和FreeType庫的支持

max函數返回參數中數值最大的值。

第79~125行:根據設定的圖片水印位置計算具體坐標值,你可以根據效果具體細化水印的位置。

第127~129行:新建一個和目標圖片大小一致的圖片。

注:由于imagecreatetruecolor函數范圍的是一個黑色圖片,所以如果你的目標圖片是透明的,則生成的新圖將不會是透明色。

第131~162行:根據圖片或者文字方式,最終生成添加了水印的圖片。

調用說明:

以函數調用方式調用即可,當然你也可以以類的方式封裝,或者你也可以根據需要將此函數進一步細分模塊也可以。當然你現在這樣用也是沒有任何問題的,我已測試過,請放心使用。

其他說明:

由于imagettftext和imagettfbbox函數需要GD庫和FreeType庫的支持,如果你的運行環境不支持GD庫和FreeType庫則文字方式就無法實現,你可以用imagestring函數實現給圖片添加文字水印,同時設定下text方式下的$logow和$logoh值即可。

imagejpeg函數也可以設置合成的圖片質量。

PHP圖片加水印函數思路總結:

首先計算目標圖片、水印圖片以及文字的寬度和高度,在根據具體位置計算最終水印出現的位置信息,即X和Y值。最后合成圖片,新的圖片就添加了水印。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品在线视频| 成人写真视频福利网| 亚洲第一精品久久忘忧草社区| 国产91在线播放九色快色| 精品偷拍各种wc美女嘘嘘| 国产精品久久国产精品99gif| 91久久久久久久久久久久久| 97久久精品国产| 亚洲精品久久久久久久久久久久| 久久精品久久久久| 精品性高朝久久久久久久| 中文字幕久精品免费视频| 欧美日韩中文在线| 久久精品免费电影| 福利一区福利二区微拍刺激| 国产精品v片在线观看不卡| 欧美电影免费观看高清完整| 成人女保姆的销魂服务| 欧美精品激情视频| 欧美日韩免费在线| 欧美大奶子在线| 麻豆乱码国产一区二区三区| 欧美成人sm免费视频| 国产精品都在这里| 疯狂蹂躏欧美一区二区精品| 国产999在线| 中文字幕日本精品| 国产91在线播放精品91| 美女性感视频久久久| 亚洲影院污污.| 日韩hd视频在线观看| 亚洲精品网址在线观看| 国产精品永久免费| www.欧美三级电影.com| 国产精品福利在线| 懂色av影视一区二区三区| 曰本色欧美视频在线| 久久精品亚洲国产| 国产精品久久久久久婷婷天堂| 97在线免费观看视频| 91成人精品网站| 久久久久久久久久久成人| 中文字幕久精品免费视频| 色综久久综合桃花网| 亚洲一区二区三区视频| 亚洲免费影视第一页| 激情亚洲一区二区三区四区| 国产日韩精品视频| 亚洲18私人小影院| 97在线日本国产| 成人精品福利视频| 国产精品丝袜视频| 国产精品96久久久久久又黄又硬| 欧美精品999| 久久的精品视频| 欧美成人免费一级人片100| 久色乳综合思思在线视频| 高清欧美性猛交xxxx| 国产精品1区2区在线观看| 欧美激情二区三区| 欧美性在线视频| 高潮白浆女日韩av免费看| 久久99精品国产99久久6尤物| 日韩电视剧免费观看网站| 亚洲跨种族黑人xxx| 欧美精品在线第一页| 亚洲成人av在线播放| 国产欧美亚洲精品| 国产一区二区美女视频| 国产精品福利无圣光在线一区| 亚洲第一中文字幕在线观看| 亚洲成人xxx| 一区二区三区精品99久久| 国产欧美va欧美va香蕉在| 亚洲精品www久久久久久广东| 97超级碰碰人国产在线观看| 国产不卡一区二区在线播放| 久久久久久成人| 精品久久久在线观看| 夜夜躁日日躁狠狠久久88av| 最近2019中文字幕第三页视频| 国产成人激情小视频| 日韩大片免费观看视频播放| 亚洲一区中文字幕在线观看| 日韩在线观看网址| 亚洲美女免费精品视频在线观看| 国产成人一区二| 亚洲小视频在线| 日韩亚洲欧美中文高清在线| 国产精品高潮粉嫩av| 国产专区精品视频| 久久成人亚洲精品| 亚洲自拍中文字幕| 日韩中文在线中文网在线观看| 精品久久久久久久久久久久久久| 亚洲色图五月天| 69av成年福利视频| 国产亚洲xxx| 中文字幕国产精品| 欧美日韩另类字幕中文| 欧美成人性生活| 欧美黑人视频一区| 欧美激情精品久久久久久大尺度| 久久久国产一区| 亚洲国产又黄又爽女人高潮的| 色噜噜亚洲精品中文字幕| 欧美精品激情在线观看| 国产va免费精品高清在线| 97色在线视频| 欧美激情视频在线观看| 国产色婷婷国产综合在线理论片a| 成人久久久久久久| 国产日韩欧美日韩| 91最新在线免费观看| 91成人在线播放| 51精品国产黑色丝袜高跟鞋| 国产欧美精品日韩| 欧美高清在线视频观看不卡| 丝袜亚洲另类欧美重口| 一个人看的www久久| 亚洲三级 欧美三级| 国产经典一区二区| 欧美激情亚洲激情| 欧美高清视频在线播放| 日韩av在线天堂网| 亚洲最大在线视频| 91九色国产视频| 色综合视频一区中文字幕| 国产一区二区三区在线免费观看| 亚洲肉体裸体xxxx137| 国产日韩视频在线观看| 欧美一级电影免费在线观看| 色悠久久久久综合先锋影音下载| 在线视频欧美性高潮| 国产精品扒开腿做爽爽爽视频| 国产精品成人aaaaa网站| 78色国产精品| 欧美成人午夜剧场免费观看| 欧美肥婆姓交大片| 91国偷自产一区二区三区的观看方式| 亚洲精品欧美一区二区三区| 亚洲国产高清高潮精品美女| 国产精品久久国产精品99gif| 日韩国产精品亚洲а∨天堂免| 北条麻妃久久精品| 77777亚洲午夜久久多人| 精品久久久久久久久久久久| 91亚洲精品视频| 日韩欧美在线视频观看| 日韩美女视频免费看| 亚洲国产美女久久久久| 黑人巨大精品欧美一区二区三区| 欧亚精品在线观看| 精品无人区太爽高潮在线播放| 97香蕉超级碰碰久久免费软件| 欧美美女18p| 国产精品自拍偷拍| 国产精品久久二区| 久久不射电影网| 91色p视频在线| 欧美怡春院一区二区三区| 亚洲欧美日韩综合| 久久99青青精品免费观看| 最近2019中文字幕第三页视频|