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

PHP で画像をアップロードし、透かし (画像透かし、テキスト透かし) を追加する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:45:07862ブラウズ

php で写真をアップロードし、透かしを追加します (画像の透かし、テキストの透かし) ユーザーが写真をアップロードすると、自動的に透かしが追加される比較的完成度の高いソフトウェアです。この透かし追加機能では、テキスト透かしと画像透かしを追加できます。

画像をアップロードして透かし(画像の透かし、テキストの透かし)を追加するためのphpチュートリアル
ユーザーが写真をアップロードすると、自動的に透かしが追加される比較的完成度の高いソフトウェアです。この透かし追加機能では、テキスト透かしと画像透かしを追加できます。

/*
※2010年6月21日作成
*
* コントロール画像用のクラス
*
※s71ence製
*
* @$img_path 画像パス
* @$is_auto_reduce サイズレベル1に応じて画像を自動圧縮するかどうかは
* @$is_appoint 手動で圧縮するか増幅するか 1 はい
* @$multiple 圧縮/増幅率を手動で指定します
* @$is_water_str 透かしテキストを追加するかどうか 1 はい
* @$water_str 透かしテキスト
* @$is_watermark 画像にウォーターマークを追加するかどうか 1 はい
* @$log_path 透かし画像のパス
* @$is_display 写真を表示するかどうか 1 はい
* @$is_create 圧縮画像を生成するかどうか 1 はい
*
* 注:
* 1. 新しい画像を生成するとき、画像を表示することはできません。つまり、$isdisplay と $iscreate を同時に 1 に設定することはできません
※2. 画像の幅または高さが1000未満の場合は、圧縮率を手動で設定して圧縮する必要があります
※3. ウォーターマークを有効にする場合は、元の画像サイズが1000以内であることを推奨します
。 * 4. 透かしテキストに漢字を含めることはできません
* 5. 新しく生成された画像は元のディレクトリ ファイルにあり、n レベルをサポートします
*/

クラスimage_control
{
プライベート $img_path;
プライベート $is_auto_reduce;
プライベート $is_appoint;
プライベート $multiple;
プライベート $is_water_str;
プライベート $water_str;
プライベート $is_watermark;
プライベート $log_path;
プライベート $is_display;
プライベート $is_create;

関数 __construct($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create)
{
$this->img_path=$img_path;
$this->is_auto_reduce=$is_auto_reduce;
$this->is_appoint=$is_appoint;
$this->multiple=$multiple;
$this->is_water_str=$is_water_str;
$this->water_str=$water_str;
$this->is_watermark=$is_watermark;
$this->logo_path=$logo_path;
$this->is_display=$is_display;
$this->is_create=$is_create;
}

関数img_control()
{
//元の画像を取得します
$img_info=getimagesize($this->img_path);

スイッチ($img_info[2])
{
ケース1:
$img_get=@imagecreatefromgif($this->img_path);
休憩

ケース2:
$img_get=@imagecreatefromjpeg($this->img_path);
休憩

ケース3:
$img_get=@imagecreatefrompng($this->img_path);
休憩
}

//テキストの透かし
if($this->is_water_str==1)
{
//imagettftext(元画像, 文字サイズ, 文字回転, ウォーターマーク開始座標 x, ウォーターマーク開始座標 y, $te, 'simhei.ttf', $str);
$te=imagecolorallocate($img_get,255,255,255);
$str=iconv("gbk","utf-8",$this->water_str);//透かしテキスト
Imagettftext($img_get,16,0,$img_info[0]-200,$img_info[1]-20,$te,'msyh.ttf',$str);
}

//画像の透かし
if($this->is_watermark==1)
{
//透かし画像処理
$logo_info=getimagesize($this->logo_path);

スイッチ($logo_info[2])
{
ケース 1:
$logo=@imagecreatefromgif($this->logo_path);
休憩

ケース2:
$logo=@imagecreatefromjpeg($this->logo_path);
休憩

ケース3:
$logo=@imagecreatefrompng($this->logo_path);
休憩
}

//透かしロゴ画像
//関数説明: imagecopy(元画像, 透かし画像, 透かし座標 x, 透かし座標 y, 透かし画像開始座標 x, 透かし画像開始座標 y, '透かし画像幅', '透かし画像高さ'); Imagecopy($img_get,$logo,0,0,0,0,$logo_info[0],$logo_info[1]);
}

//自動画像圧縮 画像サイズ分類に基づいた自動圧縮

//imagecopyresize(canvas, 元の画像, キャンバスの開始 x 座標, キャンバスの開始 y 座標, 元の画像の開始 x 座標, 元の画像の開始 x 座標, 新しい画像の幅, 新しい画像の高さ, 元の画像の幅, 元の画像の高さ );
if($this->is_auto_reduce==1)
{
If($img_info[0]>=3000 || $img_info[1]>=3000)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.03,$img_info[1]*0.03);//キャンバスを生成します
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.03,$img_info[1]*0.03,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=2500 || $img_info[1]>=2500)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.04,$img_info[1]*0.04);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.04,$img_info[1]*0.04,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=2000 || $img_info[1]>=2000)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.05,$img_info[1]*0.05);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.05,$img_info[1]*0.05,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=1500 || $img_info[1]>=1500)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.08,$img_info[1]*0.08);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.08,$img_info[1]*0.08,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=1000 || $img_info[1]>=1000)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.1,$img_info[1]*0.1);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.1,$img_info[1]*0.1,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=500 || $img_info[1]>=500)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.2,$img_info[1]*0.2);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.2,$img_info[1]*0.2,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=300 || $img_info[1]>=300)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.3,$img_info[1]*0.3);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.3,$img_info[1]*0.3,$img_info[0],$img_info[1]);
}
それ以外
{
$new_image_get=imagecreatetruecolor($img_info[0]*1,$img_info[1]*1);
Imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*1,$img_info[1]*1,$img_info[0],$img_info[1]);
}
}

//手動画像圧縮

//imagecopyresize(canvas, 元の画像, キャンバスの開始 x 座標, キャンバスの開始 y 座標, 元の画像の開始 x 座標, 元の画像の開始 x 座標, 新しい画像の幅, 新しい画像の高さ, 元の画像の幅, 元の画像の高さ);
if($this->is_appoint)
{
$new_image_get=imagecreatetruecolor($img_info[0]*$this->multiple,$img_info[1]*$this->multiple);//キャンバスを生成します
imagecopyresize($new_image_get,$img_get,0,0,0,0,$img_info[0]*$this->multiple,$img_info[1]*$this->multiple,$img_info[0],$img_info [1]);
}

//画像出力

if($this->is_display==1)
{
Header("コンテンツタイプ: 画像/jpeg");
imagejpeg($new_image_get)を返します;
}

//新しい画像の生成

if($this->is_create==1)
{
$new_name=explode("/",$this->img_path);
$new_name_string="";

for($i=0;$i {
$new_name_string.=$new_name[$i]."/";
}

$new_img_path=$new_name_string."new".$new_name[$i];

if(imagejpeg($new_image_get,$new_img_path) && imagejpeg($img_get,$this->img_path))
{
setcookie("img_new_path", $new_img_path);
//return "画像が正常に生成されました!
新しい画像: ".$new_img_path."
元の画像: ".$this->img_path;
}
それ以外
{
「イメージの生成に失敗しました。設定が正しいかどうか確認してください!」を返します;
}
}
}

関数__destruct()
{
//クリア
}
}

//メソッドの呼び出し

/* $img_path="../users/user_photo/t2.jpg" //操作される画像のパス
$is_auto_reduce=1;//画像をサイズレベル1に従って自動圧縮するかどうかは
$is_appoint=0;//手動圧縮するかどうか 1は
$multiple=0.5;//圧縮率を手動で指定します
$is_water_str=0;//透かしテキストを追加するかどうか
$water_str="www.bKjia.c0m";//透かしテキスト
$is_watermark=0;//画像1にウォーターマークを入れるかどうかは
$logo_path="../image/logo_about.gif";//透かし画像のパス
$is_display=0;//画像1を表示するかどうかは
$is_create=1;//圧縮画像1を生成するかどうかは
$img=new image_control($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create);
echo $img->img_control();*/

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633043.html技術記事 PHP は画像をアップロードして透かし (画像透かし、テキスト透かし) を追加します。これは、ユーザーが画像をアップロードするときに画像に透かしを自動的に追加する比較的完全な方法です。この透かし追加機能はテキストを追加できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。