-
-
/* - * 関数: php 画像透かし (透かしは画像またはテキストをサポートします)
- * パラメーター:
- * $groundImage 背景画像、つまり、必要な画像一時的に透かしを入れます。GIF、JPG、PNG 形式のみをサポートします。
- * $waterPos 透かしの位置は 10 個あり、0 はランダムな位置です。
- *1 は左上、2 は中央上、3 は右上を意味します。 4 は左中央、5 は中央中央、6 は右中央を意味します
- *7 は左下を意味します、8 は中央下を意味します、9 は右下を意味します
- * $waterImage 画像の透かし、つまり現在透かしとして使用されている画像です。 GIF、JPG、PNG 形式のみをサポートします。
- * $waterText テキスト透かし、つまりテキストが透かしとして使用されます。ASCII コードをサポートしますが、中国語はサポートされません。
- * $textFont テキスト サイズ、値は 1、2、3 です。 、4 または 5、デフォルトは 5 です。
- * $textColor テキストの色、値は 16 進数の色の値、デフォルトは #FF0000 (赤) です。
- * http://bbs.it-home.org
- * : 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;
- case 6://6 は中央の右です
- $posX = $ground_w - $w; $h) / 2;
- 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;
- case 2:imagejpeg($) ground_im,$ groundImage);break;
- case 3:imagepng($ground_im,$groundImage);break;
- default:die($errorMsg);
- //メモリを解放する
- if(isset($water_info)) $water_info) ;
- if(isset($water_im)) imagedestroy($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< ;br> ";
- //テキストのウォーターマーク
- imageWaterMark($uploadfile,0,"","あなたのウォーターテキスト",9,"#EBEBEB");
- //画像のウォーターマーク
- //$waterImage="./images /watermark.gif";//ウォーターマーク画像のパス
- //imageWaterMark($uploadfile,9,$waterImage);
- echo "";
- }
- else
- {
- echo "Fail
" - }
- ?>
-
-
- コードをコピーします
-
-
-
-
|