国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > 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值。最后合成圖片,新的圖片就添加了水印。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 同江市| 大兴区| 资中县| 中山市| 正宁县| 永胜县| 桂阳县| 霍林郭勒市| 防城港市| 广宗县| 鄂温| 乌兰浩特市| 乌什县| 建昌县| 浑源县| 河津市| 侯马市| 邢台县| 三江| 玉溪市| 大安市| 峨山| 庐江县| 张家川| 涡阳县| 丹东市| 信丰县| 凤城市| 闻喜县| 沽源县| 盐边县| 九江市| 临沧市| 集安市| 上饶县| 东山县| 曲沃县| 宿松县| 平南县| 天津市| 湖南省|