ホームページ > バックエンド開発 > PHPチュートリアル > PHP画像は自動的に透かしコードを追加します。PHP画像透かし機能コード

PHP画像は自動的に透かしコードを追加します。PHP画像透かし機能コード

WBOY
リリース: 2016-07-25 08:51:53
オリジナル
1019 人が閲覧しました
  1. /*
  2. * 関数: php 画像透かし (透かしは画像またはテキストをサポートします)
  3. * パラメーター:
  4. *$groundimage 背景画像、つまり、透かしを入れる必要がある画像、現在のみgif、jpg、png 形式をサポートします。
  5. *$waterpos のウォーターマークの位置は 10 個あり、0 はランダムな位置です。
  6. *1 は左上、2 は中央上、3 は右上です。中央は左、5 は中央、6 は中央が右側であることを意味します
  7. *7 は下部が左側にあることを意味します、8 は下部が中央にあることを意味します、9 は下部が右側にあることを意味します。 $waterimage 画像ウォーターマーク、つまりウォーターマークとして使用される画像は、現在 gif、jpg、png 形式のみをサポートします。
  8. *$watertext テキスト ウォーターマーク、つまりテキストはウォーターマークとして使用され、ASCII コードをサポートします。中国語;
  9. *$textfont テキスト サイズ、値は 1、2、3、4 または 5、デフォルトは 5;
  10. *$textcolor テキストの色、値は 16 進数の色の値、デフォルトは #ff0000 (赤) ;
  11. *
  12. * 注: gd 2.0 をサポート、freetype、gif read、gif create、jpg、png をサポート
  13. *$waterimage と $watertext が最も多く、同時に使用しないことをお勧めします。どちらかを選択してください。 、最初に $waterimage を使用します。
  14. *$waterimageが有効な場合、パラメータ$waterstring、$stringfont、$stringcolorは無効になります。
  15. ※透かし入り画像のファイル名は$groundimageと同じです。
  16. * 著者:longware @ 2004-11-3 14:15:13
  17. */
  18. function imagewatermark($groundimage,$waterpos=0,$waterimage="",$watertext="",$textfont=5,$textcolor ="#ff0000")
  19. {
  20. $iswaterimage = false;
  21. $formatmsg = "このファイル形式はまだサポートされていません。画像処理ソフトウェアを使用して画像を gif、jpg、または png 形式に変換してください。";
  22. //ウォーターマーク ファイルを読み取ります
  23. if(!empty($waterimage) && file_exists($waterimage))
  24. {
  25. $iswaterimage = true;
  26. $water_info = getimagesize($waterimage);
  27. $water_w = $water_info[ 0 ];//ウォーターマーク画像の幅を取得
  28. $water_h = $water_info[1];//ウォーターマーク画像の高さを取得
  29. switch($water_info[2])//ウォーターマーク画像の形式を取得
  30. {
  31. ケース 1:$water_im = imagecreatefromgif($waterimage);break;
  32. case 2:$water_im = imagecreatefromjpeg($waterimage);break;
  33. case 3:$water_im = imagecreatefrompng($waterimage);break; $formatmsg);
  34. }
  35. }
  36. //背景画像を読み込みます
  37. if(!empty($groundimage) && file_exists($groundimage))
  38. {
  39. $ground_info = getimagesize($groundimage);
  40. $ground_w = $ground_info[ 0];// 背景画像の幅を取得
  41. $ground_h = $ground_info[1];// 背景画像の高さを取得
  42. switch($ground_info[2])// 背景画像の形式を取得
  43. {
  44. case 1:$ground_im = imagecreatefromgif($ groundimage);break;
  45. case 2:$ground_im = imagecreatefromjpeg($groundimage);break;
  46. case 3:$ground_im = imagecreatefrompng($groundimage);break; ($formatmsg);
  47. }
  48. }
  49. else
  50. {
  51. die("透かしを入れる必要がある画像が存在しません!")
  52. }
  53. //透かしの位置
  54. if($iswaterimage)//画像の透かし
  55. {
  56. $w = $water_w;
  57. $h = $water_h;
  58. $label = "画像";
  59. else//テキスト透かし
  60. {
  61. $temp = imagettfbbox(ceil($textfont*2.5),0,"。 /cour.ttf",$watertext);//TrueType フォントを使用してテキストの範囲を取得
  62. $w = $temp[2] - $temp[6];
  63. $h = $temp[3] - $temp[7] ;
  64. unset($temp);
  65. $label = "テキストエリア";
  66. if( ($ground_w<$w) || ($ground_h<$h) )
  67. {
  68. echo "ウォーターマークを付ける必要がある画像はウォーターマーク「.$label」より長いです。小さいため、ウォーターマークを生成できません。 ";
  69. return;
  70. }
  71. switch($waterpos)
  72. {
  73. case 0://random
  74. $posx = rand(0,($ground_w - $w));
  75. $posy = rand(0,($ground_h) - $h));
  76. break;
  77. case 1://1 は左上を意味します
  78. $posy = 0;
  79. case 2://2 は上中央を意味します
  80. $posx =
  81. $posy = 0;
  82. $posy = 0;
  83. $posy = 0; ://4 は中央左を意味します
  84. $posx = 0;
  85. $posy = ($ground_h - $h) / 2;
  86. case 5://5 は中央中央を意味します
  87. $posx = ($ground_w - $w) ) / 2;
  88. $posy = ($ground_h - $h) / 2;
  89. break;
  90. case 6://6 は中央の右です
  91. $posx = $ground_w - $w; $h) / 2;
  92. break;
  93. case 7://7 は左下
  94. $posy = $ground_h - $h;
  95. case 8://8 は下中央
  96. $ posx = ($ground_w - $w) / 2;
  97. $posy = $ground_h - $h;
  98. case 9://9 は右下です
  99. $posx = $ground_w - $w; ground_h - $h;
  100. default://random
  101. $posx = rand(0,($ground_h - $h) ; posy, 0 , 0, $water_w,$water_h);//ウォーターマークを対象ファイルにコピー
  102. }
  103. else//テキストウォーターマーク
  104. {
  105. if( !empty($textcolor) && (strlen($textcolor)==7) )
  106. {
  107. $r = hexdec(substr($textcolor,1,2));
  108. $g = hexdec(substr($textcolor,3,2)); }
  109. else
  110. {
  111. die("ウォーターマークのテキストの色の形式が正しくありません。");
  112. }
  113. imagestring ( $ground_im, $textfont, $posx, $posy, $watertext, imagecolorallocate($ground_im, $r, $g, $b));
  114. }
  115. //ウォーターマーク生成後の画像
  116. @unlink($groundimage);
  117. switch($ground_info[2])// 背景画像の形式を取得します
  118. {
  119. case 1:imagegif($ground_im,$groundimage);break; ground_im,$ groundimage);break;
  120. case 3:imagepng($ground_im,$groundimage);break;
  121. default:die($errormsg);
  122. //メモリを解放します
  123. if(isset($water_info)) $water_info) ;
  124. if(isset($water_im))
  125. unset($ground_info)
  126. }
  127. //--------
  128. if(isset) ($_files ) && !empty($_files['userfile']) && $_files['userfile']['size']>0)
  129. {
  130. $uploadfile = "./".time()."_ ".$ _files['userfile']['name'];
  131. if (copy($_files['userfile']['tmp_name'], $uploadfile))
  132. {
  133. echo "ok
    ";
  134. / /テキストのウォーターマーク
  135. imagewatermark($uploadfile,0,"","http://blog.csdn.net/longware/",5,"#ff0000");
  136. //画像のウォーターマーク
  137. //$waterimage=。 /hanweb_shuiyin. gif";//ウォーターマーク画像パス
  138. //imagewatermark($uploadfile,0,$waterimage);
  139. echo "" ;
  140. }
  141. else
  142. {
  143. echo "fail
    ";
  144. }
  145. }
  146. ?>
  147. ファイル:
  148. ;
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート