ホームページ  >  記事  >  バックエンド開発  >  Watermark 画像に透かしを追加するために使用される PHP クラス

Watermark 画像に透かしを追加するために使用される PHP クラス

WBOY
WBOYオリジナル
2016-07-29 08:37:46913ブラウズ

コードをコピーします コードは次のとおりです:


/*
* 関数: PHP 画像透かし (透かしは画像またはテキストをサポートします)
* パラメーター:
* $groundImage 背景画像、つまり透かしを入れる必要がある画像は、現在 GIF のみをサポートしています。 JPG、PNG 形式 ;
* $waterPos ウォーターマークの位置、10 の状態があり、0 はランダムな位置です
* 1 は上部が左側にあることを意味し、2 は上部が中央にあることを意味します。右;
* 4 は左側の中央、5 は中央の右側です
* 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 を同時に使用しないことをお勧めします。そのうちの 1 つである $waterImage が最初に使用されます。
* $waterImage が有効な場合、パラメータ $waterString、$stringFont、および $stringColor は有効になりません。
* 透かし入り画像のファイル名は$groundImageと同じです。
* 著者:longware @ 2004-11-3 14:15:13
*/
function imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$textF
{
$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])//ウォーターマーク画像の形式を取得します
{
case 1:$ Water_im = imagecreatefromgif($waterImage);break;default:die($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; g);
else
{
die("透かしを入れる必要のある画像が存在しません! ”);
}
//透かしの位置
if($isWaterImage)//画像の透かし
{
$w = $water_w;
$h = $water_h; $label /テキスト透かし
{
$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_w - $w)); - $h));

ケース; 2://2 は上中央です
$posX = ($ ground_w - $w) / 2;
$posY = 0;
case 3://3 は右上です
$posX = $ground_w - $ w;
$posY = 0;
ケース 4 ://4 は左側の中央です
$posY = ($ground_h - $h) / 2; - $w ) / 2;
$posY = ($ground_h - $h) / 2;
$posY = ($ground_h - $h) / 2;
case 8/8 は、中央下
$posX $posX X = $ground_w - $w;
$posY = $ground_h - $h;
デフォルト://ランダム
$posX = rand(0,($ground_w - $w); );
$posY = rand(0,($ ground_h - $h) );
//画像のカラーブレンディングモードを設定します
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))
{ hexdec($ textcolor、1,2);”);
}
imagestring ($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B)); switch($ground_info[2])//背景画像の形式を取得します
{ case 1:imagegif($ground_im,$groundImage);break;
case 2:imagejpeg($ground_im,$ groundImage);break; 3:imagepng($ground_im,$groundImage);break;
default:die($errorMsg);
//メモリを解放
if(isset($water_info)) unset($water _info) ; $water_im)) imagedestroy($water_im);
unset($ground_info)
imagedestroy($ground_im);
$id=$_REQUEST['id'];
$num = count($_FILES['ユーザーファイル']['名前']);
print_r($ _FILES['ユーザーファイル']);
print_r($_FILES['ユーザーファイル']['名前']); echo $num;
echo "
";
if(isset($id)){
for($i=0;$i<$id;$i++){
if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size'] > アップロードファイル
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}
& lt; post" & gt;
& lt;? Php
For ($ a = 0; $ ID; $ id; $ id; $a++){
echo “File:
”;
}
?>




上記では、透かしを含む、画像に透かしを追加するために使用される透かし PHP クラスを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。