ホームページ  >  記事  >  バックエンド開発  >  PHP 画像透かしコード例分析_PHP チュートリアル

PHP 画像透かしコード例分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:33:20858ブラウズ

通常の Web サイトでは、多くの場合、写真をアップロードするときに、独自の Web サイトのロゴの透かしを画像に追加する必要があります。では、このステップをどのように実装すればよいでしょうか?まず、理解しましょう

ファイルタイプを判断してグラフィックを作成し、それを最初に作成したグラフィックにコピーし、塗りつぶして四角形を作成し、imagestring() に書き込むか、元の透かしを判断する準備を整えます画像プログラム タイプ: 1 つは文字列で、もう 1 つはその上にグラフィック オブジェクトを追加します。以下は透かし入りのPHP画像の転載です!

パラメータの説明:

$max_file_size: アップロードするファイルのサイズ制限、単位 BYTE
$destination_folder: アップロードするファイルのパス
$watermark: ウォーターマークを付けるかどうか (1 はウォーターマークを追加することを意味し、その他はウォーターマークを追加しないことを意味します)

PHP 画像ウォーターマークの使用手順:

1. GD ライブラリを使用する必要があるため、PHP.INI ファイルの「extension=php_gd2.dll」行の前にある ; 記号を削除します。2. extension_dir = を次の場所に変更します。 php_gd2.dll は次の場所にあります。 目次;

PHP 画像にウォーターマークを追加するコード例:

<ol class="dp-xml">
<li class="alt"><span><span>//上传文件类型列表     </span></span></li>
<li>
<span>$</span><span class="attribute">uptypes</span><span>=</span><span class="attribute-value">array</span><span>(     </span>
</li>
<li class="alt"><span>'image/jpg',     </span></li>
<li><span>'image/jpeg',     </span></li>
<li class="alt"><span>'image/png',     </span></li>
<li><span>'image/pjpeg',     </span></li>
<li class="alt"><span>'image/gif',     </span></li>
<li><span>'image/bmp',     </span></li>
<li class="alt"><span>'image/x-png'     </span></li>
<li><span>);     </span></li>
<li class="alt">
<span>$</span><span class="attribute">max_file_size</span><span>=</span><span class="attribute-value">2000000</span><span>; //上传文件大小限制, 单位BYTE     </span>
</li>
<li>
<span>$</span><span class="attribute">destination_folder</span><span>=</span><span class="attribute-value">"uploadimg/"</span><span>; //上传文件路径     </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">watermark</span><span>=</span><span class="attribute-value">1</span><span>; //是否附加水印(1为加水印,其他为不加水印);     </span>
</li>
<li>
<span>$</span><span class="attribute">watertype</span><span>=</span><span class="attribute-value">1</span><span>; //水印类型(1为文字,2为图片)     </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">waterposition</span><span>=</span><span class="attribute-value">1</span><span>; //水印位置(1为左下角,2为右下角  </span>
</li>
<li><span>,3为左上角,4为右上角,5为居中);     </span></li>
<li class="alt">
<span>$</span><span class="attribute">waterstring</span><span>="</span><span class="tag"><</span><span> </span><span class="tag-name">A</span><span> href="</span><span class="attribute-value">http</span><span>://www.xplore.cn/"</span><span class="tag">></span><span> </span>
</li>
<li>
<span>http://www.xplore.cn/</span><span class="tag"><</span><span> /A</span><span class="tag">></span><span>"; //水印字符串     </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">waterimg</span><span>=</span><span class="attribute-value">"xplore.gif"</span><span>; //水印图片     </span>
</li>
<li>
<span>$</span><span class="attribute">imgpreview</span><span>=</span><span class="attribute-value">1</span><span>; //是否生成预览图(1为生成,其他为不生成);     </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">imgpreviewsize</span><span>=</span><span class="attribute-value">1</span><span>/2; //缩略图比例     </span>
</li>
<li>
<span class="tag">?></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> </span><span class="tag-name">html</span><span class="tag">></span><span>     </span>
</li>
<li>
<span class="tag"><</span><span> </span><span class="tag-name">head</span><span class="tag">></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> </span><span class="tag-name">title</span><span class="tag">></span><span>ZwelL图片上传程序</span><span class="tag"></</span><span class="tag-name">title</span><span class="tag">></span><span>     </span>
</li>
<li>
<span class="tag"><</span><span> </span><span class="tag-name">style</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/css"</span><span class="tag">></span><span>     </span>
</li>
<li class="alt">
<span><!--     </span></li><li><span>body     </span></li><li class="alt"><span>{     </span></li><li><span>font-size: 9pt;     </span></li><li class="alt"><span>}     </span></li><li><span>input     </span></li><li class="alt"><span>{     </span></li><li><span>background-color: #66CCFF;     </span></li><li class="alt"><span>border: 1px inset #CCCCCC;     </span></li><li><span>}     </span></li><li class="alt"><span>--</span><span class="tag">></span><span>     </span>
</li>
<li>
<span class="tag"><</span><span> /style</span><span class="tag">></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> /head</span><span class="tag">></span><span>     </span>
</li>
<li>
<span class="tag"><</span><span> </span><span class="tag-name">body</span><span class="tag">></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> </span><span class="tag-name">form</span><span> </span><span class="attribute">enctype</span><span>=</span><span class="attribute-value">"multipart/form-data"</span><span>   </span></li><li><span class="attribute">method</span><span>=</span><span class="attribute-value">"post"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"upform"</span><span class="tag">></span><span>     </span>
</li>
<li class="alt"><span>上传文件:     </span></li>
<li>
<span class="tag"><</span><span class="tag-name">input</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"upfile"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"file"</span><span class="tag">></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> </span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"submit"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"上传"</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">></span><span>     </span>
</li>
<li>
<span>允许上传的文件类型为:</span><span class="tag"><?</span><span>=implode(', ',$uptypes)</span><span class="tag">?></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> /form</span><span class="tag">></span><span>     </span>
</li>
<li>
<span class="tag"><</span><span> ?php     </span></li><li class="alt"><span>if ($_SERVER['REQUEST_METHOD'] == 'POST')     </span></li><li><span>{     </span></li><li class="alt"><span>if (!is_uploaded_file($_FILES["upfile"]  </span></li><li><span>[tmp_name]))     </span></li><li class="alt"><span>//是否存在文件     </span></li><li><span>{     </span></li><li class="alt"><span>echo "图片不存在!";     </span></li><li><span>exit;     </span></li><li class="alt"><span>}     </span></li><li><span>$</span><span class="attribute">file</span><span> = $_FILES["upfile"];     </span></li><li class="alt"><span>if($max_file_size </span><span class="tag"><</span><span> $file["size"])     </span></li><li><span>//检查文件大小     </span></li><li class="alt"><span>{     </span></li><li><span>echo "文件太大!";     </span></li><li class="alt"><span>exit;     </span></li><li><span>}     </span></li><li class="alt"><span>if(!in_array($file["type"], $uptypes))     </span></li><li><span>//检查文件类型     </span></li><li class="alt"><span>{     </span></li><li><span>echo "文件类型不符!".$file["type"];     </span></li><li class="alt"><span>exit;     </span></li><li><span>}     </span></li><li class="alt"><span>if(!file_exists($destination_folder))     </span></li><li><span>{     </span></li><li class="alt"><span>mkdir($destination_folder);     </span></li><li><span>}     </span></li><li class="alt"><span>$</span><span class="attribute">filename</span><span>=$file["tmp_name"];     </span></li><li><span>$</span><span class="attribute">image_size</span><span> = </span><span class="attribute-value">getimagesize</span><span>($filename);     </span></li><li class="alt"><span>$</span><span class="attribute">pinfo</span><span>=</span><span class="attribute-value">pathinfo</span><span>($file["name"]);     </span></li><li><span>$</span><span class="attribute">ftype</span><span>=$pinfo['extension'];     </span></li><li class="alt"><span>$</span><span class="attribute">destination</span><span> = $destination_folder.  </span></li><li><span>time().".".$ftype;     </span></li><li class="alt"><span>if (file_exists($destination) &&  </span></li><li><span> $overwrite != true)     </span></li><li class="alt"><span>{     </span></li><li><span>echo "同名文件已经存在了";     </span></li><li class="alt"><span>exit;     </span></li><li><span>}     </span></li><li class="alt"><span>if(!move_uploaded_file ($filename,  </span></li><li><span> $destination))     </span></li><li class="alt"><span>{     </span></li><li><span>echo "移动文件出错";     </span></li><li class="alt"><span>exit;     </span></li><li><span>}     </span></li><li class="alt"><span>$</span><span class="attribute">pinfo</span><span>=</span><span class="attribute-value">pathinfo</span><span>($destination);     </span></li><li><span>$</span><span class="attribute">fname</span><span>=$pinfo[basename];     </span></li><li class="alt"><span>echo " </span><span class="tag"><</span><span class="tag-name">font</span><span> </span><span class="attribute">color</span><span>=</span><span class="attribute-value">red</span><span class="tag">></span><span>已经成功上传  </span>
</li>
<li>
<span class="tag"><</span><span> /font</span><span class="tag">></span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">></span><span>文件名:     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> </span><span class="tag-name">font</span><span> </span><span class="attribute">color</span><span>=</span><span class="attribute-value">blue</span><span class="tag">></span><span>".$destination_folder.  </span>
</li>
<li>
<span>$fname."</span><span class="tag"><</span><span> /font</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">></span><span>";     </span>
</li>
<li class="alt"><span>echo " 宽度:".$image_size[0];     </span></li>
<li><span>echo " 长度:".$image_size[1];     </span></li>
<li class="alt">
<span>echo "</span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">></span><span> 大小:".$file["size"]." bytes";     </span>
</li>
<li>
<span>if($</span><span class="attribute">watermark</span><span>==1)     </span>
</li>
<li class="alt"><span>{     </span></li>
<li>
<span>$</span><span class="attribute">iinfo</span><span>=</span><span class="attribute-value">getimagesize</span><span>($destination,$iinfo);     </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">nimage</span><span>=</span><span class="attribute-value">imagecreatetruecolor</span><span>($image_size[0]  </span>
</li>
<li><span>,$image_size[1]);     </span></li>
<li class="alt">
<span>$</span><span class="attribute">white</span><span>=</span><span class="attribute-value">imagecolorallocate</span><span>($nimage,255,255,255);     </span>
</li>
<li>
<span>$</span><span class="attribute">black</span><span>=</span><span class="attribute-value">imagecolorallocate</span><span>($nimage,0,0,0);     </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">red</span><span>=</span><span class="attribute-value">imagecolorallocate</span><span>($nimage,255,0,0);     </span>
</li>
<li><span>imagefill($nimage,0,0,$white);     </span></li>
<li class="alt"><span>switch ($iinfo[2])     </span></li>
<li><span>{     </span></li>
<li class="alt"><span>case 1:     </span></li>
<li>
<span>$</span><span class="attribute">simage</span><span> =</span><span class="attribute-value">imagecreatefromgif</span><span>($destination);     </span>
</li>
<li class="alt"><span>break;     </span></li>
<li><span>case 2:     </span></li>
<li class="alt">
<span>$</span><span class="attribute">simage</span><span> =</span><span class="attribute-value">imagecreatefromjpeg</span><span>($destination);     </span>
</li>
<li><span>break;     </span></li>
<li class="alt"><span>case 3:     </span></li>
<li>
<span>$</span><span class="attribute">simage</span><span> =</span><span class="attribute-value">imagecreatefrompng</span><span>($destination);     </span>
</li>
<li class="alt"><span>break;     </span></li>
<li><span>case 6:     </span></li>
<li class="alt">
<span>$</span><span class="attribute">simage</span><span> =</span><span class="attribute-value">imagecreatefromwbmp</span><span>($destination);     </span>
</li>
<li><span>break;     </span></li>
<li class="alt"><span>default:     </span></li>
<li><span>die("不支持的文件类型");     </span></li>
<li class="alt"><span>exit;     </span></li>
<li><span>}     </span></li>
<li class="alt"><span>imagecopy($nimage,$simage,0,0,0,0,  </span></li>
<li><span>$image_size[0],$image_size[1]);     </span></li>
<li class="alt"><span>imagefilledrectangle($nimage,1,  </span></li>
<li><span>$image_size[1]-15,80,$image_size[1],$white);     </span></li>
<li class="alt"><span>switch($watertype)     </span></li>
<li><span>{     </span></li>
<li class="alt"><span>case 1: //加水印字符串     </span></li>
<li><span>imagestring($nimage,2,3,$image_size[1]-15,  </span></li>
<li class="alt"><span>$waterstring,$black);     </span></li>
<li><span>break;     </span></li>
<li class="alt"><span>case 2: //加水印图片     </span></li>
<li>
<span>$</span><span class="attribute">simage1</span><span> =</span><span class="attribute-value">imagecreatefromgif</span><span>("xplore.gif");     </span>
</li>
<li class="alt"><span>imagecopy($nimage,$simage1,0,0,0,0,85,15);     </span></li>
<li><span>imagedestroy($simage1);     </span></li>
<li class="alt"><span>break;     </span></li>
<li><span>}     </span></li>
<li class="alt"><span>switch ($iinfo[2])     </span></li>
<li><span>{     </span></li>
<li class="alt"><span>case 1:     </span></li>
<li><span>//imagegif($nimage, $destination);     </span></li>
<li class="alt"><span>imagejpeg($nimage, $destination);     </span></li>
<li><span>break;     </span></li>
<li class="alt"><span>case 2:     </span></li>
<li><span>imagejpeg($nimage, $destination);     </span></li>
<li class="alt"><span>break;     </span></li>
<li><span>case 3:     </span></li>
<li class="alt"><span>imagepng($nimage, $destination);     </span></li>
<li><span>break;     </span></li>
<li class="alt"><span>case 6:     </span></li>
<li><span>imagewbmp($nimage, $destination);     </span></li>
<li class="alt"><span>//imagejpeg($nimage, $destination);     </span></li>
<li><span>break;     </span></li>
<li class="alt"><span>}     </span></li>
<li><span>//覆盖原上传文件     </span></li>
<li class="alt"><span>imagedestroy($nimage);     </span></li>
<li><span>imagedestroy($simage);     </span></li>
<li class="alt"><span>}     </span></li>
<li>
<span>if($</span><span class="attribute">imgpreview</span><span>==1)     </span>
</li>
<li class="alt"><span>{     </span></li>
<li>
<span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">></span><span>图片预览:</span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">></span><span>";     </span>
</li>
<li class="alt">
<span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">ccid_file</span><span> </span><span class="attribute">values</span><span>=</span><span class="attribute-value">""</span><span> </span><span class="attribute">width</span><span>=".  </span></li><li><span>($image_size[0]*$imgpreviewsize)."     </span></li><li class="alt"><span class="attribute">height</span><span>=</span><span class="attribute-value">".($image_size[1]*$imgpreviewsize);"</span><span>     </span></li><li><span>echo " </span><span class="attribute">alt</span><span>="图片预览:r文件名:".  </span></li><li class="alt"><span>$destination."r上传时间:" </span><span class="tag">/></span><span>";     </span>
</li>
<li><span>}     </span></li>
<li class="alt"><span>}     </span></li>
<li>
<span class="tag">?></span><span>     </span>
</li>
<li class="alt">
<span class="tag"><</span><span> /body</span><span class="tag">></span><span>     </span>
</li>
<li>
<span class="tag"><</span><span> /html</span><span class="tag">></span><span>  </span>
</li>
</ol>
上記のコード例は、PHP 画像にウォーターマークを追加する具体的な実装方法です。


http://www.bkjia.com/PHPjc/446067.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/446067.html技術記事通常の Web サイトで写真をアップロードする必要がある場合、多くの場合、その Web サイトのロゴの透かしを写真に追加する必要があります。では、このステップをどのように実装すればよいでしょうか?まず理解しましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。