ホームページ  >  記事  >  バックエンド開発  >  PHP 画像透かしクラス、PHP は中国語の透かしコードを追加します

PHP 画像透かしクラス、PHP は中国語の透かしコードを追加します

WBOY
WBOYオリジナル
2016-07-25 08:51:48869ブラウズ
  1. Header("Content-type: image/png") /*画像を出力することをブラウザに通知*/
  2. $im = imagecreate(400, 300);画像のサイズを定義します*/
  3. $gray = ImageColorAllocate($im, 235, 235, 235);
  4. $fontfile = "simkai.ttf"; * $fontfile フォントのパスはオペレーティング システムに応じて、simhei.ttf (Heold)、SIMKAI.TTF (Italic)、SIMFANG.TTF (Imitation Song)、SIMSUN.TTC (Song style & New Song style) になります。 GD でサポートされているその他の中国語フォント*/
  5. $str = iconv('GB2312','UTF-8','中国語のウォーターマーク') /*gb2312 文字セットを UTF-8 文字に変換します*/
  6. ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str);
  7. /* 中国語の透かしを追加*/
  8. ImageDestroy($im)?>
  9. ;
例 2、php 画像の透かしコード。

// ************************************ *** //
// 関数: 画像にテキストを追加します
    // パラメーター: $img 画像ファイル名
  1. // $new_img 画像ファイル名を保存します。空の場合、画像を保存しないことを意味します
  2. // $text文字列の内容
  3. // text_size 文字列サイズ
  4. // text_angle フォント文字列出力角度
  5. // text_x 文字列出力 x 座標
  6. // text_y 文字列出力 y 座標
  7. // $text_font フォントファイル名
  8. // $r,$g ,$ b文字列の色のRGB値
  9. // *************************************** * //
  10. function img_text($img, $new_img, $text, $text_size, $text_angle, $text_x, $text_y, $text_font, $r, $g, $b){
  11. $text=iconv("gb2312" ,"UTF) -8",$text);
  12. Header("Content-type: image/gif");
  13. $im = @imagecreatefromstring(file_get_contents($img)) or die ("画像を開けませんでした!");
  14. $color = ImageColorAllocate($im, $r,$g,$b);
  15. //ImageTTFText(int im, int size, int angle, int x, int y, intcol, string fontfile, string text):
  16. / /This関数は、TTF (TrueType フォント) フォントのテキストを画像に書き込みます。
  17. //パラメータ: size はフォントのサイズです。
  18. // angle は時計回りに計算されたフォントの角度です。0 度は水平 (左から右)、90 度はテキストを下から上に示します。 // 2 つのパラメータ x と y はテキストの座標値です (原点は左上隅です)
  19. //col はテキストの色です
  20. // fontfile はフォント ファイルの名前です。
  21. // text は文字列の内容です。
  22. ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);
  23. if ($new_img==""): // しないでください。画像を保存、表示のみ
  24. else:
  25. ImageGif($im,$new_img); // 画像を保存しますが、表示されません
  26. endif; // グラフィックを終了し、メモリ領域を解放します
  27. ? >
  28. コードをコピー
  29. 例 3、PHP 画像透かしは、PHP テキスト透かし効果をサポートします。

    1. /*
    2. * 関数: PHP 画像透かし (透かしは画像またはテキストをサポートします)
    3. * パラメーター:
    4. * $groundImage 背景画像、つまり、透かしを入れる必要がある画像 (現在のみ) GIF、JPG、PNG 形式をサポートします。
    5. * $waterPos ウォーターマークの位置は 10 個あり、0 はランダムな位置です。
    6. * 1 は左上、2 は中央上、3 は右上です。 5 は中央、6 は右側にあることを意味します。
    7. * 7 は左側にあることを意味し、8 は中央にあることを意味し、9 は右側にあることを意味します。つまり、透かしとして使用される画像は、現在 GIF、JPG、および PNG 形式のみをサポートします
    8. * $waterText テキスト透かし、つまりテキストは透かしとして使用され、ASCII コードをサポートしますが、中国語はサポートされません
    9. * $ textFont テキストのサイズ、値は 1、2、3、4、または 5、デフォルトは 5 です。
    10. * $textColor テキストの色、値は 16 進数の色の値、デフォルトは #FF0000 (赤) です。注: GD 2.0 をサポート、FreeType、GIF Read、GIF Create、JPG、PNG をサポート
    11. * $waterImage と $waterText が最も多く、同時に使用しないことをお勧めします。どちらか 1 つを選択し、$waterImage を使用してください初め。
    12. * $waterImage が有効な場合、パラメータ $waterString、$stringFont、および $stringColor は無効になります。
    13. * 透かし入り画像のファイル名は$groundImageと同じです。
    14. * 著者:longware @ 2004-11-3 14:15:13
    15. */
    16. function imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$textFont=5,$textColor =”#FF0000″)
    17. {
    18. $isWaterImage = FALSE;
    19. $formatMsg = 「このファイル形式はまだサポートされていません。画像を GIF、JPG、または PNG 形式に変換してください。”;
    20. //ウォーターマークファイルを読み込む
    21. if(!emptyempty($waterImage) && file_exists($waterImage))
    22. {
    23. $water_info = getimagesize($waterImage);
    24. $water_w = $water_info[ 0 ];//ウォーターマーク画像の幅を取得
    25. $water_h = $water_info[1];//ウォーターマーク画像の高さを取得
    26. switch($water_info[2])//ウォーターマーク画像の形式を取得
    27. {
    28. ケース 1:$water_im = imagecreatefromgif($waterImage);break;
    29. case 2:$water_im = imagecreatefromjpeg($waterImage);break;
    30. case 3:$water_im = imagecreatefrompng($waterImage);break; $formatMsg);
    31. }
    32. }
    33. //背景画像を読み込みます
    34. if(!emptyempty($groundImage) && file_exists($groundImage))
    35. {
    36. $ground_info = getimagesize($groundImage);
    37. $ground_w = $ground_info[ 0];// 背景画像の幅を取得
    38. $ground_h = $ground_info[1];// 背景画像の高さを取得
    39. switch($ground_info[2])// 背景画像の形式を取得
    40. {
    41. case 1:$ground_im = imagecreatefromgif($ groundImage);break;
    42. case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
    43. case 3:$ground_im = imagecreatefrompng($groundImage);break; ($formatMsg);
    44. }
    45. }
    46. else
    47. {
    48. die("透かしを入れる必要がある画像が存在しません!")
    49. }
    50. //透かしの位置
    51. if($isWaterImage)//画像の透かし
    52. {
    53. $w = $water_w;
    54. $h = $water_h;
    55. $label = "画像";
    56. else//テキスト透かし
    57. {
    58. $temp = imagettfbbox(ceil($textFont*5),0,". /cour.ttf",$waterText);//TrueType フォントを使用してテキストの範囲を取得
    59. $w = $temp[2] - $temp[6];
    60. $h = $temp[3] - $temp[7] ;
    61. unset($temp);
    62. $label = "テキストエリア";
    63. if( ($ground_w<$w) || ($ground_h<$h) )
    64. {
    65. echo "ウォーターマークを付ける必要がある画像はウォーターマーク「.$label」より長いです。小さいため、ウォーターマークを生成できません。 ”;
    66. return;
    67. }
    68. switch($waterPos)
    69. {
    70. case 0://random
    71. $posX = rand(0,($ground_h); - $h));
    72. break;
    73. case 1://1 は左上を意味します
    74. $posY = 0;
    75. case 2://2 は上中央を意味します
    76. $posX = ($
    77. $posY = 0;
    78. $posY = 0;
    79. $posY = 0; ://4 は中央左を意味します
    80. $posX = 0;
    81. $posY = ($ground_h - $h) / 2;
    82. case 5://5 は中央中央を意味します
    83. $posX = ($ground_w - $w) ) / 2;
    84. $posY = ($ground_h - $h) / 2;
    85. case 6://6 は中央の右です
    86. $posX = $ground_w - $w; $h) / 2;
    87. case 7://7 は左下
    88. $posY = $ground_h - $h;
    89. case 8://8 は下中央
    90. $ posX = ($ground_w - $w) / 2;
    91. $posY = $ground_h - $h;
    92. case 9://9 は右下です
    93. $posX = $ground_w - $w; ground_h - $h;
    94. default://random
    95. $posX = rand(0,($ground_h - $h) ; posY, 0 , 0, $water_w,$water_h);//ウォーターマークを対象ファイルにコピー
    96. }
    97. else//テキストウォーターマーク
    98. {
    99. if( !emptyempty($textColor) && (strlen($textColor)==7) )
    100. {
    101. $R = hexdec(substr($textColor,1,2));
    102. $G = hexdec(substr($textColor,3,2)); }
    103. else
    104. {
    105. die("ウォーターマークのテキストの色の形式が正しくありません。”);
    106. }
    107. imagestring ($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
    108. }
    109. // 水印後の画像を生成
    110. @unlink($groundImage);
    111. switch($ground_info[2])//背景画像取得の格式
    112. {
    113. case 1:imagegif($ground_im,$groundImage);break;
    114. ケース 2:imagejpeg($ground_im,$groundImage);break;
    115. ケース 3:imagepng($ground_im,$groundImage);break;
    116. デフォルト:die($errorMsg);
    117. }
    118. //释放内存
    119. if(isset($water_info)) unset($water_info);
    120. if(isset($water_im)) imagedestroy($water_im);
    121. unset($ground_info);
    122. imagedestroy($ground_im);
    123. }
    124. //——————————————————————————————
    125. $id=$_REQUEST['id'];
    126. $num = count($_FILES['ユーザーファイル']['名前']);
    127. print_r($_FILES['ユーザーファイル']);
    128. print_r($_FILES['ユーザーファイル']['名前']);
    129. $num をエコーし​​ます。
    130. エコー「
      」;
    131. if(isset($id)){
    132. for($i=0;$iif(isset($_FILES) && !emptyempty($_FILES['userfile']) && $ _FILES['userfile']['size']>0)
    133. {
    134. $uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];
    135. エコー「
      」;
    136. echo $uploadfile;
    137. if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
    138. {
    139. echo “OK
      ”;
    140. //文字水印
    141. //imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc”);
    142. //图片水印
    143. $waterImage=”logo_ok1. gif”;//水印图片路径
    144. imageWaterMark($uploadfile,9,$waterImage);
    145. echo “”;
    146. }
    147. else
    148. {
    149. echo “失敗
      ”;
    150. }
    151. }
    152. }
    153. }
    154. ?>
    155. for($a=0;$a<$id;$a++){
    156. echo “文件:
      ” ;
    157. }
    158. ?>
    159. 复制代

      コード4 中国語の透かしを追加する

      1. /*-----
      2. **説明: これは、指定された画像に下部ウォーターマークを追加するために使用されるカスタム クラスです (画像表示領域を占有しません)。呼び出すオブジェクトを作成します
      3. * *作成日: 2007-10-09
      4. **更新日: 2007-10-09
      5. **手順: 1. gd ライブラリのサポートと iconv サポートが必要です (php5 は既に含まれているため、インストールする必要はありません)ロードされています)
      6. 2. jpg/jpeg/gif/png の 3 つのタイプの画像にのみ適しています。他のタイプは処理されません
      7. 3. 画像が配置されているディレクトリの属性は書き込み可能である必要があることに注意してください
      8. 4.
      9. $objImg = new MyWaterDown Chinese();
      10. $objImg->パス = "images /";
      11. $objImg->テキスト = "HAHAKONGJIANHTTP://HI .BAIDU.COM/LYSONCN";
      12. $objImg->Font = "./ font/simhei.ttf";
      13. $objImg->Run();
      14. **メンバー関数:
      15. ------ -------*/
      16. class MyWaterDown Chinese{
      17. var $Path = " ./"; //このクラスを呼び出すページからの、画像が配置されているディレクトリの相対パス
      18. var $FileName = " "; //「1.jpg」などの画像の名前
      19. var $Text = ""; //画像 追加する透かしテキストは中国語をサポートします
      20. var $TextColor = "#ffffff"; //色GIF 画像の場合、フォントの色は黒のみです
      21. var $TextBgColor = "#000000" //テキストの背景のバーの色
      22. var $Font = "c://windows//fonts// simhei.ttf"; //フォント格納ディレクトリ、相対パス
      23. var $OverFlag = true; //元の画像に上書きするかどうか、デフォルトは上書きです。上書きしない場合は、元の画像ファイルの後ろに自動的に「_water_down」が追加されます名前 (例: "1.jpg" => "1_water_down.jpg" )
      24. var $BaseWidth = 200; //画像の幅は少なくとも 200 である必要があり、透かしテキストが追加されます。
      25. //-------------
      26. //関数: クラスコンストラクター (php5.0 以降)
      27. //パラメータ: なし
      28. //戻り値: なし
      29. function __construct( ){;}
      30. //---------------------
      31. //関数: クラスデストラクター (php5.0 以降)
      32. //パラメータ: なし
      33. //戻り値: なし
      34. function __destruct(){;}
      35. //----------------------
      36. //関数: オブジェクト 関数を実行し、画像に透かしを追加します
      37. / /パラメータ: なし
      38. //Return: なし
      39. function Run()
      40. {
      41. if($this->FileName == "" || $this->Text == "")
      42. return; GD ライブラリがインストールされているかどうか
      43. if(false == function_exists("gd_info"))
      44. {
      45. echo "GD ライブラリがシステムにインストールされていないため、画像に透かしを入れることができません。"; /入力画像と出力画像のパス名を設定します
      46. $arr_in_name =explode(".",$this->FileName)
      47. //
      48. $inImg = $this->Path.$this->FileName; outImg = $inImg;
      49. $tmpImg = $this->Path.$arr_in_name[0]."_tmp.".$arr_in_name[1] //一時的に処理された画像、非常に重要です
      50. if(!$this -> OverFlag)
      51. $outImg = $this->Path.$arr_in_name[0]."_water_down.".$arr_in_name[1];
      52. //画像が存在するかどうかを検出
      53. if(!file_exists($inImg))
      54. return ;
      55. //画像の属性を取得します
      56. $groundImageType = @getimagesize($inImg);
      57. $imgHeight = $groundImageType[1]; ;
      58. if($imgWidth < $this->BaseWidth) //基本幅より小さい場合は処理されません
      59. //画像がjpg/jpeg/gif/pngでない場合、処理されません
      60. switch($imgType)
      61. {
      62. case 1:
      63. $image = imagecreatefromgif($inImg);
      64. $this->TextBgColor = "#ffffff"; // GIF 画像のフォントは黒なので背景色は白に設定されます
      65. ケース 2 :
      66. $image = imagecreatefromjpeg($inImg)
      67. デフォルト; :
      68. return;
      69. break;
      70. }
      71. //カラーを作成
      72. $color = @image,hexdec(substr($this->TextColor,1,2)),hexdec(substr($this-> TextColor,3,2)),hexdec(substr($this-> TextColor,5,2))); //テキストの色
      73. //空の画像を生成し、その高さは下部の透かしの高さだけ増加します
      74. $newHeight = $imgHeight+20;
      75. $objTmpImg = @imagecreatetruecolor($imgWidth,$ newHeight);
      76. $colorBg = @imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)),hexdec (substr($this->TextBgColor,3,2)),hexdec(substr ($this->TextBgColor,5,2))); //背景色
      77. //画像の背景色を塗りつぶします
      78. @ imagefill ($objTmpImg,0,0,$colorBg);
      79. //元の画像を一時画像にコピーします
      80. @imagecopy($objTmpImg,$image,0,0,0,0,$imgWidth,$imgHeight);
      81. //書き込むウォーターマークテキストオブジェクトを作成する
      82. $objText = $this->createText($this->Text);
      83. //書き込むウォーターマークテキストの位置を計算する
      84. $x = 5; $y = $newHeight-5;
      85. //テキストの透かしを書き込みます
      86. @imagettftext($objTmpImg,10 ,0,$x,$y,$color,$this->Font,$objText);新しい写真、一時的な写真
      87. switch($imgType)
      88. ケース 1:
      89. imagegif($objTmpImg ,$tmpImg)
      90. break;
      91. imagejpeg($objTmpImg,$tmpImg); :
      92. imagepng($objTmpImg,$tmpImg);
      93. default:
      94. break ;
      95. //リソースを解放します
      96. @imagedestroy($image);ファイル
      97. if($this->OverFlag)
      98. {
      99. //元の画像を上書きします
      100. @ unlink($inImg);
      101. @rename($tmpImg,$outImg);
      102. else
      103. {
      104. //Do元の画像を上書きしません
      105. @rename($tmpImg,$outImg);
      106. }
      107. }
      108. //-- --------
      109. //関数: ウォーターマーク テキスト オブジェクトを作成します
      110. //パラメータ: なし
      111. / /Return: ウォーターマーク テキスト オブジェクトを作成しました
      112. function createText($instring)
      113. {
      114. $outstring=""
      115. for($i=0;$i<$max;$i++);
      116. {
      117. $h=ord($instring[$i]);
      118. if($h>=160 && $i{
      119. $outstring .= "".base_convert(iconv ("gb2312","ucs-2",substr($instring,$i,2))), 16,10).";"
      120. }
      121. else
      122. {
      123. $outstring; [$i];
      124. }
      125. }
      126. return $outstring;
      127. }
      128. }//クラス
      129. ?> ;
      130. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。