ホームページ  >  記事  >  バックエンド開発  >  PHP画像にウォーターマークを追加する例

PHP画像にウォーターマークを追加する例

WBOY
WBOYオリジナル
2016-07-25 09:12:55882ブラウズ


画像に透かしを追加する PHP コードの例。

  1. /*
  2. //Example
  3. $image = new Gimage();
  4. $image->limit = 600;//長さと幅の制​​限
  5. $image->wm_text= ” www.linuxlaptop.cn”;//ウォーターマークテキスト
  6. $image->wm_fontfile=”font/xsuni.ttf”;//フォントファイル
  7. $image->wm_color=”#ff0000″;
  8. $image-> ; save_file = "ltcn.jpg";//xx ファイルに保存
  9. $image->create("linuxlaptop.jpg");//xx ファイルから作成
  10. */
  11. /*
  12. +------ -----------------------
  13. | サムネイルと透かし入りの画像クラスを生成する
  14. +-------------- --- -------------
  15. */
  16. Class Gimage{
  17. var $input_type = "" //入力画像形式
  18. var $output_type = "jpg"; //出力画像形式
  19. var $limit = 0; // 画像サイズ制限
  20. var $filename = "" // 画像のファイル名を入力します (画像データを直接入力することもできます)
  21. var $jpeg_quality = 90 // jpeg 画質
  22. var $ save_file = ''; //出力ファイル名
  23. var $wm_text = ""; //ウォーターマークのテキスト (中国語はサポートされていません:'( )
  24. var $wm_size = 12; //ウォーターマークのテキストのサイズ
  25. var $wm_angle = 0; //ウォーターマークのテキスト角度
  26. var $wm_x = 30; //ウォーターマークのx座標
  27. var $wm_color = "#cccccc" //ウォーターマークの色
  28. var $wm_fontfile = "geodesic .ttf";//ウォーターマークフォントファイル
  29. function create($filename="")
  30. {
  31. if ($filename) $this->filename = $filename;
  32. if (!$this-> input_type) $this->get_type();
  33. if (!$this->output_type) $this->output_type = $this->input_type;
  34. if ($this->input_type == "jpg ") $this->input_type = "jpeg";
  35. if ($this->output_type == "jpg") $this->output_type = "jpeg";
  36. switch ($this->input_type) {
  37. case 'gif':
  38. $src_img=ImageCreateFromGIF($this->ファイル名);
  39. ブレーク;
  40. case 'jpeg':
  41. $src_img=ImageCreateFromJPEG($this->ファイル名);
  42. ブレーク;
  43. case ' png':
  44. $src_img=ImageCreateFromPNG($this->ファイル名);
  45. ブレーク;
  46. デフォルト:
  47. $src_img=ImageCreateFromString($this->ファイル名);
  48. ブレーク
  49. }
  50. $src_w=ImageSX ($ src_img);
  51. $src_h=ImageSY($src_img);
  52. if ($src_w>=$src_h){
  53. if ($src_w>$this->limit){
  54. $new_w=$this->limit ;
  55. $new_h=($this->limit / $src_w)*$src_h;
  56. }
  57. }
  58. else{
  59. if ($src_h>$this->limit){
  60. $new_h=$this-> 制限;
  61. $new_w=($this->limit / $src_h)*$src_w;
  62. }
  63. }
  64. if ($new_h){
  65. $dst_img=imagecreatetruecolor($new_w,$new_h);
  66. imagecopyresampled($ dst_img, $src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));
  67. }
  68. else{
  69. $dst_img = $src_img;
  70. }
  71. if ( $this ->wm_text)
  72. {
  73. if(preg_match("/([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([ a- f0-9][a-f0-9])/i", $this->wm_color, $color))
  74. {
  75. $red = hexdec($color[1]);
  76. $green = hexdec( $color [2]);
  77. $blue = hexdec($color[3]);
  78. }
  79. $wm_color = imagecolorallocatealpha($dst_img, $red, $green, $blue, 90);
  80. imagettftext($dst_img, $this- >wm_size, $this->wm_angle, $this->wm_x, $this->wm_y, $wm_color, $this->wm_fontfile, $this->wm_text);
  81. }
  82. if ($ this->save_file)
  83. {
  84. switch ($this->output_type){
  85. case 'gif':
  86. $src_img=ImagePNG($dst_img, $this->save_file);
  87. Break;
  88. case 'jpeg ':
  89. $src_img=ImageJPEG($dst_img, $this->save_file, $this->jpeg_quality);
  90. ブレーク;
  91. case 'png':
  92. $src_img=ImagePNG($dst_img, $this-> save_file);
  93. break;
  94. default:
  95. $src_img=ImageJPEG($dst_img, $this->save_file, $this->jpeg_quality);
  96. Break
  97. }
  98. }
  99. else
  100. {
  101. header( "コンテンツ-type: image/{$this->output_type}");
  102. switch ($this->output_type){
  103. case 'gif':
  104. $src_img=ImagePNG($dst_img);
  105. Break;
  106. case ' jpeg':
  107. $src_img=ImageJPEG($dst_img, "", $this->jpeg_quality);
  108. ブレーク;
  109. case 'png':
  110. $src_img=ImagePNG($dst_img);
  111. ブレーク;
  112. デフォルト:
  113. $src_img=ImageJPEG($dst_img, "", $this->jpeg_quality);
  114. Break; }
  115. }
  116. imagedestroy($dst_img);
  117. }
  118. function get_type()// 画像ファイルの種類を取得します
  119. {
  120. $name_array =explode(".",$this->ファイル名);
  121. if (preg_match("/.(jpg|jpeg|gif|png)$/", $this->ファイル名, $matches ) )
  122. {
  123. $this->input_type = strto lower($matches[1]);
  124. }
  125. else
  126. {
  127. $this->input_type = "string";
  128. }
  129. }
  130. }
コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。