ホームページ  >  記事  >  バックエンド開発  >  透かし画像を作成する PHP の例

透かし画像を作成する PHP の例

WBOY
WBOYオリジナル
2016-06-23 13:49:451260ブラウズ

現在、QQ Zone や Sina Weibo などのソーシャル ソフトウェアでは、共有される写真のほとんどに透かしが入っています。透かしを追加すると、あたかも独自の個人署名が追加されたかのように、写真がユニークになります。これにより、他人があなたの写真を盗むのを十分に防ぐことができ、また、透かしを見るだけで他人が写真に関する情報を入手できるようになります。今日は写真に透かしを追加して共有する関数を書きました。この機能を使用すると、写真にウォーターマークを追加するのがさらに便利になります。実際、原理は非常に単純です。元の画像は画像であり、透かしも実際には画像です。ただし、一部の透かしには背景が白または透明です。その後、2 つの画像が結合されて透かし画像が形成されます。

1. ウォーターマーク画像を作成するために必要な PHP 関数

(1) getimagesize();

(2) imagecreatefromjpeg(); ;

; ( );imagejpeg();imagepng();

特定の関数の使用方法については詳しく説明しません。PHP リファレンス マニュアルを参照してください

2. コード共有

<?phpfunction watermark($maxfile,$minfile){	//获取大小图信息	$maxarr=getimagesize($maxfile);	$minarr=getimagesize($minfile);	$max_width=$maxarr[0];	$max_height=$maxarr[1];	$max_format=$maxarr[2];	$max_mime=$maxarr['mime'];		$min_width=$minarr[0];	$min_height=$minarr[1];	$min_format=$minarr[2];	//$min_mime=$minarr['mime'];                //判断大小图格式	switch($max_format){		case 1:			$max_createimg="imagecreatefromgif";			$max_outimg="imagegif";			break;		case 2:			$max_createimg="imagecreatefromjpeg";			$max_outimg="imagejpeg";			break;		case 3:			$max_createimg="imagecreatefrompng";			$max_outimg="imagepng";			break;	}	switch($min_format){		case 1:			$min_createimg="imagecreatefromgif";			break;		case 2:			$min_createimg="imagecreatefromjpeg";			break;		case 3:			$min_createimg="imagecreatefrompng";			break;	}	//创建大小图资源	$maxim=$max_createimg($maxfile);	$minim=$min_createimg($minfile);		//两张图的尺寸差	$D_value_x=$max_width-$min_width;	$D_value_y=$max_height-$min_height;		//添加水印	imagecopy($maxim,$minim,$D_value_x,$D_value_y,0,0,$min_width,$min_height);		//保存水印图片	header("content-type:{$max_mime}");	$max_outimg($maxim,"watermark.jpg");}watermark("picture/apple.jpg","picture/copypic.jpg");?>

3.コード内で理解しにくいかもしれないことをいくつか説明します

(1) 異なる形式の画像には異なる関数サフィックスが必要なため、関数を使用してリソースを作成し、画像を保存する前にこれらのサフィックスを実行する必要があります。フォーマット。

(2) 小さい画像を大きい画像の右下隅に追加するために、2 つの画像間のサイズの差を計算します (ほとんどの透かしは右下隅に追加されます)。

4. 最適化できる全体的な領域

(1) 2 つのスイッチは常に少し多いように感じます。 if文やforループの中に入れれば確実に統合できます。とてもお腹が空いているので、この問題は今後最適化していきます (もちろん自分自身への言い訳です)。

(2) 私が使用した透かしは、直接別の小さな画像です。ただし、実際の透かしは、ほとんどの場合、単語の行、URL、時刻などです。検証コードやウォーターマークを作成する方法として使用できます。次に、透かしに必要なテキストを関数のパラメータとして使用すると、必要な透かしを画像に追加できます。同時に、透かしは画像内で見つける必要はなく、完全に自動的に生成されます。

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