-
-
/* - * 関数: 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 (赤);
- *
- * 注: GD 2.0 をサポート、FreeType、GIF 読み取りをサポート、 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(!emptyempty($waterImage) && file_exists($waterImage))
- {
- $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(!emptyempty($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*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_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( !emptyempty($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;
- ケース 2:imagejpeg($ground_im,$groundImage);break;
- ケース 3:imagepng($ground_im,$groundImage);break;
- デフォルト:die($errorMsg);
- }
- //释放内存在
- if(isset($water_info)) unset($water_info);
- if(isset($water_im)) imagedestroy($water_im);
- unset($ground_info);
- imagedestroy($ground_im);
- }
- //- bbs.it-home.org
- $id=$_REQUEST['id'];
- $num = count($_FILES['ユーザーファイル']['名前']);
- print_r($_FILES['ユーザーファイル']);
- print_r($_FILES['ユーザーファイル']['名前']);
- $num をエコーします。
- エコー「
」;
- if(isset($id)){
- for($i=0;$i<$id;$i++){
- if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $ _FILES['userfile']['size']>0)
- {
- $uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];
- 「
」をエコーします。
- $uploadfile をエコー;
- if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
- {
- echo “OK
”;
- //文字水印
- //imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc”);
- //图片水印
- $waterImage=”logo_ok1. gif”;//水印图片路径
- imageWaterMark($uploadfile,9,$waterImage);
- echo “”;
- }
- else
- {
- echo “失敗
”;
- }
- }
- }
- }
- ?>
- for($a=0;$a<$id;$a++){
- echo “文件:
” ;
}
- ?>
-
-
复制代
|