ホームページ  >  記事  >  バックエンド開発  >  PHP で画像に透かしを追加し、画像をアップロードして透かしを追加する PHP クラス_PHP チュートリアル

PHP で画像に透かしを追加し、画像をアップロードして透かしを追加する PHP クラス_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:07:38681ブラウズ

画像に透かしを追加し、画像をアップロードして透かしを追加する php チュートリアル php クラス


/*
* 関数: PHP 画像透かし (透かしは画像またはテキストをサポートします)
* パラメーター:
* $groundImage 背景画像、つまり、透かしを入れる必要がある画像。現在は GIF、JPG、PNG 形式のみをサポートします。
* $waterPos 透かし位置、10 個の状態があり、0 はランダムな位置です。
* 1 は左上、2 は中央上、3 は上です。右;
* 4 は左側の中央、5 は中央の中央、6 は右側の中央です
* 7 は左側の下部、8 は中央の下部です。右下;
* $waterImage 画像ウォーターマーク、つまりウォーターマークとして使用される画像は、現時点では GIF、JPG、PNG 形式のみをサポートします。
* $waterText テキスト ウォーターマーク、つまりテキストは透かしとして使用され、ASCII コードをサポートします。中国語はサポートされません。
* $textFont テキスト サイズ、値は 1、2、3、4 または 5、デフォルトは 5 です。
* $textColor テキストの色、値は 16 進数の色です。値、デフォルトは #FF0000 (赤) です
*
* 注: GD 2.0 をサポート、FreeType、GIF 読み取り、GIF 作成、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))

{
$isWaterImage = TRUE;
$water_w = $water_info[0];//ウォーターマークの取得 画像の幅
$water_h = $water_info[1];//ウォーターマーク画像の高さを取得

switch($water_info[2])//ウォーターマーク画像の形式を取得
{

case 1 :$water_im = imagecreatefromgif($waterImage );break;

ケース 2:$water_im = imagecreatefromjpeg($waterImage);break;
case 3:$water_im = imagecreatefrompng($waterImage);break; ;
}
}

/ /背景画像を読み込みます
if(!emptyempty($groundImage) && file_exists($groundImage))
{

$ground_info = getimagesize($groundImage);

$ground_w = $ground_info[0]; //背景画像の幅を取得します
$ground_h = $ground_info[1];//背景画像の高さを取得します

switch($ground_info[2])//背景画像の形式を取得します
{
ケース 1:$ground_im = imagecreatefromgif($groundImage);ブレイク ;

ケース 2:$ground_im = imagecreatefromjpeg($groundImage);ブレイク;

ケース 3:$ground_im = imagecreatefrompng($groundImage);ブレイク; formatMsg);
}
}
else
{
die (「透かしを入れる必要のある画像は存在しません! ”);
}

//ウォーターマーク位置
if($isWaterImage)//画像ウォーターマーク
$h = $water_h;
else / /Text ウォーターマーク

{

$temp = imagettfbbox(ceil($textFont*5),0,”./cour.ttf”,$waterText);//TrueType フォントを使用してテキストの範囲を取得します
$w = $temp [ 2] - $temp[6];
$h = $temp[3] - $temp[7];
$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;
case 3://3 は右上です
$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_w - $w)); ;
}

//画像ブレンドモードを設定します
imagealphablending($ground_im, true);

if($isWaterImage)//画像ウォーターマーク
{
imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);// ウォーターマークを対象ファイルにコピーします
}
else/ /テキスト透かし
{
if( !emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2)); = hexdec (substr($textColor,3,2));
$B = hexdec(substr($textColor,5))
}
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)) unset($water_info);
if(isset($water_im))imagedestroy($water_im);
imagedestroy($ground_im);
//———————————————— —— ——————————
$id=$_REQUEST['id'];
$num = count($_FILES['userfile']['name']);
print_r($_FILES[ 'userfile ']);
print_r($_FILES['userfile']['name']);

echo “
”{
for ($ i=0;$i

if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size'] > 0)
{
$uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];
echo "
"; 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 “Fail
”;

}

}
}
}

?>
for($a=0;$a< ;$ id;$a++){
echo “ファイル:
”;

}

?>



//次のコードは、アップロードされた画像に透かしを追加します。

パラメータの説明:
$max_file_size: アップロードするファイルのサイズ制限、単位 BYTE
$destination_folder: アップロードするファイルのパス
$watermark: ウォーターマークを付けるかどうか (1 はウォーターマークを追加することを意味し、その他はウォーターマークを追加しないことを意味します)
使用方法:
1. GD ライブラリを使用する必要があるため、PHP.INI ファイルの「extension=php_gd2.dll」行の前にある ; 記号を削除します。 2. extension_dir = を php_gd2.dll が存在するディレクトリに変更します。 ;
3. asp チュートリアル" >http://www.knowsky.com/php.asp;
************************* ********* ******************/
//アップロードファイルタイプリスト
$uptypes=array(
'image/jpg',
' image/jpeg'、
'image/png'、
'image/pjpeg'、
'image/gif'、
'image/bmp'、
'image/x-png'
$max_file_size=2000000; //アップロードファイルのサイズ制限、単位 BYTE
$destination_folder="uploadimg/"; //アップロードファイルのパス
$watermark=1; //ウォーターマークを付けるかどうか (1 はウォーターマークを付けないことを意味します); Watertype=1; //ウォーターマークのタイプ (1 はテキスト、2 は画像)
$waterposition=1; // ウォーターマークの位置 (1 は左下隅、2 は右下隅、3 は左上隅) 、4 は右上隅、5 は中央です);
$waterstring="http://www.xplore.cn/" //ウォーターマーク文字列
$waterimg="xplore.gif";
$imgpreview=1; //プレビュー画像を生成するかどうか(1は生成、その他は生成しない ; Text/CSSチュートリアル "& gt;
& lt;!-
Body
{
font-size: 9pt;}
INPUT {
背景色: #66ccff;
ボーダー: 1px インセット #cccccccc }


ファイルをアップロードします:


アップロードできるファイルの種類は次のとおりです:
if ($ _SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile" ][tmp_name]))
// ファイルは存在しますか?
< $file["size"] )
//ファイルサイズを確認します
{
echo "ファイルが大きすぎます!";
exit
}
if(!in_array($file["type"], $uptypes))类 // ファイルを確認しますtype {
echo "ファイルの種類が一致しません!" $ File ["type"]
}
if (! File_exists ($ Destination_folder)) {
mkdir ($ Destination_folder) }
$filename=$ファイル["tmp_name"];
$image_size = getimagesize($filename);
$ftype=$pinfo['extension']; .time (). ".". $ Ftype;
If (File_exists ($ Destination) && $overwrite! = TRUE) {
Echo のファイルが存在しました ";
Exit ;
} |    $fname=$pinfo[ベース名];
echo " 既成功上传
文件名: ".$destination_folder.$fname."
";
echo " 宽度:".$image_size[0];
echo " 长度:".$image_size[1];
echo "
大小:".$file["size"]." バイト";
if($watermark==1)
{
$iinfo=getimagesize($destination,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
switch ($iinfo[2])
{
ケース 1:
$simage =imagecreatefromgif($destination);
休憩。
ケース 2:
$simage =imagecreatefromjpeg($destination);
休憩。
ケース 3:
$simage =imagecreatefrompng($destination);
休憩。
ケース 6:
$simage =imagecreatefromwbmp($destination);
休憩。
デフォルト:
die("不サポートな文件型");
終了します。
}
imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
switch($watertype)
{
case 1: //加水監視標識串
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
休憩。
ケース 2: //加水印图片
$simage1 =imagecreatefromgif("xplore.gif");
imagecopy($nimage,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
休憩。
}
switch ($iinfo[2])
{
ケース 1:
//imagegif($nimage, $destination);
imagejpeg($nimage, $destination);
休憩。
ケース 2:
imagejpeg($nimage, $destination);
休憩。
ケース 3:
imagepng($nimage, $destination);

//元のアップロードされたファイルを上書きする
$ simage)} if($ imgpreview == 1){
echo "&lt; br&gt; "".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="画像プレビュー:rファイル名:".$destination."rwww .bkjia.com アップロード時間: ">" }
}
?>





http://www.bkjia.com/PHPjc/444950.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/444950.html
技術記事

画像に透かしを入れて画像をアップロードする PHP チュートリアル PHP クラス/* * 機能: PHP 画像透かし (透かしは画像またはテキストをサポートします) * パラメーター: * $groundImage 背景画像、つまり透かしを入れる必要がある画像...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。