PHP で画像にウォーターマークを追加するには、imagecreatefromjpeg、imagecreatefrompng、getimagesize などの関数を使用する必要があります。これらはすべて PHP GD ライブラリに属する関数なので、php で GD ライブラリを開く必要があります。 ini. PHP でこれらの関数を使用して画像透かしを生成します。
ウォーターマーク機能を実現するには、主にこれらの機能に依存して動作します
1.imagecreatefromjpeg // JPG画像を開く 2.imagecreatefromgif // GIF画像を開く
3.imagecreatefrompng // PNG 画像を開きます
4.imagecreatefromwbmp // WBMP 画像を開きます (あまり使用されません)
5.getimagesize // 画像サイズ情報を取得します
6.imagecopymerge // 複数の画像を統合します (ウォーターマークを追加する主な機能)
7.imagejpeg // JPG画像を保存します
8.imagegif // GIF画像を保存
9.imagepng // PNG画像を保存
コードは次のとおりです |
コードをコピー |
echo img_water_mark("1.jpg","walter.gif",null,"2.jpg",5,80);
/**
* 画像に透かしを追加します (png/jpg/gif 形式に適用可能)
*
* @作者flynetcn
*
* @param $srcImg 元画像
* @param $waterImg 透かし画像
* @param $savepath パスを保存します
* @param $savename 名前を保存します
* @param $positon 透かしの位置
* 1: 左上、2: 右上、3: 中央、4: 左下、5: 右下
* @param $alpha 透明度 -- 0: 完全に透明、100: 完全に不透明
*
* @return 成功 -- 透かし入れ後の新しい画像アドレス
* 失敗 -- -1: 元のファイルが存在しない、-2: 透かし画像が存在しない、-3: 元のファイル画像オブジェクトの作成に失敗しました
-4: ウォーターマーク ファイル画像オブジェクトの作成に失敗しました。 -5: ウォーターマークを追加した後の新しい画像の保存に失敗しました。
*/
function img_water_mark($srcImg, $waterImg, $savepath=null, $savename=null, $positon=5, $alpha=30)
{
$temp = パス情報($srcImg);
$name = $temp[ベース名];
$path = $temp[ディレクトリ名];
$exte = $temp[拡張子];
$savename = $savename : $name;
$savepath = $savepath : $path;
$savefile = $savepath ."/". $savename;
$srcinfo = @getimagesize($srcImg);
if (!$srcinfo) {
Return -1 //元のファイルは存在しません
}
$waterinfo = @getimagesize($waterImg);
if (!$waterinfo) {
Return -2 //ウォーターマーク画像は存在しません
}
$srcImgObj = image_create_from_ext($srcImg);
if (!$srcImgObj) {
Return -3; //元のファイル画像オブジェクトの作成に失敗しました
}
$waterImgObj = image_create_from_ext($waterImg);
if (!$waterImgObj) {
Return -4; //ウォーターマークファイル画像オブジェクトの作成に失敗しました
}
スイッチ ($位置) {
//1左側が上です
ケース 1: $x=$y=0;
//2 右側が上です
ケース 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0;
//3 センター
ケース 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2;
//4左が下です
ケース 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1];
//5 右下
ケース 5: $x = $srcinfo[0]-$waterinfo[0]; $y = $srcinfo[1]-$waterinfo[1];
デフォルト: $x=$y=0;
}
imagecopymerge($srcImgObj, $waterImgObj, $x, $y, 0, 0, $waterinfo[0], $waterinfo[1], $alpha);
スイッチ ($srcinfo[2]) {
ケース 1: imagegif($srcImgObj, $savefile);
ケース 2: imagejpeg($srcImgObj, $savefile);
ケース 3: imagepng($srcImgObj, $savefile);
デフォルト: return -5 //保存に失敗しました
}
imagedestroy($srcImgObj);
imagedestroy($waterImgObj);
$savefile を返す;
}
関数 image_create_from_ext($imgfile)
{
$info = getimagesize($imgfile);
$im = null;
スイッチ ($info[2]) {
ケース 1: $im=imagecreatefromgif($imgfile);
ケース 2: $im=imagecreatefromjpeg($imgfile);
ケース 3: $im=imagecreatefrompng($imgfile);
}
$im を返します;
}
現在、jpg、gif、png、その他の画像形式をサポートしています。
使用例:
コードは次のとおりです |
コードをコピー |
if($pic = Watermark('./image.jpg','./watermark.png'))
{
echo ''
}
それ以外は
{
echo '';
}
|
以下は完全なフルウォーターマーク追加機能を示しています
コードは次のとおりです |
コードをコピー |
/*************************************************** * **********
パラメータの説明:
$max_file_size : アップロード ファイル サイズ制限、単位 BYTE
$destination_folder: アップロード ファイル パス
$watermark : ウォーターマークを追加するかどうか (1 はウォーターマークを追加することを意味し、その他はウォーターマークを追加しないことを意味します);
使用説明書:
1. GD ライブラリを使用する必要があるため、PHP.INI ファイルの「extension=php_gd2.dll」行の前にある ; 番号を削除します。
2. extension_dir = を php_gd2.dll が存在するディレクトリに変更します。
************************************************* * ************/
//アップロードファイルタイプリスト
$uptypes=array(
'画像/jpg'、
'画像/jpeg'、
'画像/png'、
'画像/pjpeg'、
'画像/GIF'、
'画像/bmp'、
'画像/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.bKjia.c0m/" //ウォーターマーク文字列
$waterimg="xplore.gif" //透かし画像 ;
$imgpreview=1; //プレビュー画像を生成するかどうか(1は生成、その他は生成しない);
$imgpreviewsize=1/1; //サムネイルの比率
?>
画像透かしプログラムのデモ!WWW.MOP8.COM
| |