-
- /*
- * 関数: php 画像透かし (透かしは画像またはテキストをサポートします)
- * パラメーター:
- *$groundimage 背景画像、つまり、透かしを入れる必要がある画像、現在のみgif、jpg、png 形式をサポートします。
- *$waterpos のウォーターマークの位置は 10 個あり、0 はランダムな位置です。
- *1 は左上、2 は中央上、3 は右上です。中央は左、5 は中央、6 は中央が右側であることを意味します
- *7 は下部が左側にあることを意味します、8 は下部が中央にあることを意味します、9 は下部が右側にあることを意味します。 $waterimage 画像ウォーターマーク、つまりウォーターマークとして使用される画像は、現在 gif、jpg、png 形式のみをサポートします。
- *$watertext テキスト ウォーターマーク、つまりテキストはウォーターマークとして使用され、ASCII コードをサポートします。中国語;
- *$textfont テキスト サイズ、値は 1、2、3、4 または 5、デフォルトは 5;
- *$textcolor テキストの色、値は 16 進数の色の値、デフォルトは #ff0000 (赤) ;
- *
- * 注: gd 2.0 をサポート、freetype、gif read、gif create、jpg、png をサポート
- *$waterimage と $watertext が最も多く、同時に使用しないことをお勧めします。どちらかを選択してください。 、最初に $waterimage を使用します。
- *$waterimageが有効な場合、パラメータ$waterstring、$stringfont、$stringcolorは無効になります。
- ※透かし入り画像のファイル名は$groundimageと同じです。
- * 著者:longware @ 2004-11-3 14:15:13
- */
- function imagewatermark($groundimage,$waterpos=0,$waterimage="",$watertext="",$textfont=5,$textcolor ="#ff0000")
- {
- $iswaterimage = false;
- $formatmsg = "このファイル形式はまだサポートされていません。画像処理ソフトウェアを使用して画像を gif、jpg、または png 形式に変換してください。";
- //ウォーターマーク ファイルを読み取ります
- if(!empty($waterimage) && file_exists($waterimage))
- {
- $iswaterimage = true;
- $water_info = getimagesize($waterimage);
- $water_w = $water_info[ 0 ];//ウォーターマーク画像の幅を取得
- $water_h = $water_info[1];//ウォーターマーク画像の高さを取得
- switch($water_info[2])//ウォーターマーク画像の形式を取得
- {
- ケース 1:$water_im = imagecreatefromgif($waterimage);break;
- case 2:$water_im = imagecreatefromjpeg($waterimage);break;
- case 3:$water_im = imagecreatefrompng($waterimage);break; $formatmsg);
- }
- }
- //背景画像を読み込みます
- if(!empty($groundimage) && file_exists($groundimage))
- {
- $ground_info = getimagesize($groundimage);
- $ground_w = $ground_info[ 0];// 背景画像の幅を取得
- $ground_h = $ground_info[1];// 背景画像の高さを取得
- switch($ground_info[2])// 背景画像の形式を取得
- {
- case 1:$ground_im = imagecreatefromgif($ groundimage);break;
- case 2:$ground_im = imagecreatefromjpeg($groundimage);break;
- case 3:$ground_im = imagecreatefrompng($groundimage);break; ($formatmsg);
- }
- }
- else
- {
- die("透かしを入れる必要がある画像が存在しません!")
- }
- //透かしの位置
- if($iswaterimage)//画像の透かし
- {
- $w = $water_w;
- $h = $water_h;
- $label = "画像";
- else//テキスト透かし
- {
- $temp = imagettfbbox(ceil($textfont*2.5),0,"。 /cour.ttf",$watertext);//TrueType フォントを使用してテキストの範囲を取得
- $w = $temp[2] - $temp[6];
- $h = $temp[3] - $temp[7] ;
- unset($temp);
- $label = "テキストエリア";
- if( ($ground_w<$w) || ($ground_h<$h) )
- {
- echo "ウォーターマークを付ける必要がある画像はウォーターマーク「.$label」より長いです。小さいため、ウォーターマークを生成できません。 ";
- return;
- }
- switch($waterpos)
- {
- case 0://random
- $posx = rand(0,($ground_w - $w));
- $posy = rand(0,($ground_h) - $h));
- break;
- case 1://1 は左上を意味します
- $posy = 0;
- case 2://2 は上中央を意味します
- $posx =
- $posy = 0;
- $posy = 0;
- $posy = 0; ://4 は中央左を意味します
- $posx = 0;
- $posy = ($ground_h - $h) / 2;
- case 5://5 は中央中央を意味します
- $posx = ($ground_w - $w) ) / 2;
- $posy = ($ground_h - $h) / 2;
- break;
- case 6://6 は中央の右です
- $posx = $ground_w - $w; $h) / 2;
- break;
- case 7://7 は左下
- $posy = $ground_h - $h;
- case 8://8 は下中央
- $ posx = ($ground_w - $w) / 2;
- $posy = $ground_h - $h;
- case 9://9 は右下です
- $posx = $ground_w - $w; ground_h - $h;
- default://random
- $posx = rand(0,($ground_h - $h) ; posy, 0 , 0, $water_w,$water_h);//ウォーターマークを対象ファイルにコピー
- }
- else//テキストウォーターマーク
- {
- if( !empty($textcolor) && (strlen($textcolor)==7) )
- {
- $r = hexdec(substr($textcolor,1,2));
- $g = hexdec(substr($textcolor,3,2)); }
- else
- {
- die("ウォーターマークのテキストの色の形式が正しくありません。");
- }
- imagestring ( $ground_im, $textfont, $posx, $posy, $watertext, imagecolorallocate($ground_im, $r, $g, $b));
- }
- //ウォーターマーク生成後の画像
- @unlink($groundimage);
- switch($ground_info[2])// 背景画像の形式を取得します
- {
- case 1:imagegif($ground_im,$groundimage);break; ground_im,$ groundimage);break;
- case 3:imagepng($ground_im,$groundimage);break;
- default:die($errormsg);
- //メモリを解放します
- if(isset($water_info)) $water_info) ;
- if(isset($water_im))
- unset($ground_info)
- }
- //--------
- if(isset) ($_files ) && !empty($_files['userfile']) && $_files['userfile']['size']>0)
- {
- $uploadfile = "./".time()."_ ".$ _files['userfile']['name'];
- if (copy($_files['userfile']['tmp_name'], $uploadfile))
- {
- echo "ok
";
- / /テキストのウォーターマーク
- imagewatermark($uploadfile,0,"","http://blog.csdn.net/longware/",5,"#ff0000");
- //画像のウォーターマーク
- //$waterimage=。 /hanweb_shuiyin. gif";//ウォーターマーク画像パス
- //imagewatermark($uploadfile,0,$waterimage);
- echo "" ;
- }
- else
- {
- echo "fail
"; - }
- }
- ?>
- ファイル:
-
-
-
- ;
-
|