PHP图片加水印代码示例解析_PHP教程

php中文网
发布: 2016-07-15 13:33:20
原创
1086人浏览过

一个正规的网站,在需要上传图片时,往往都会需要在图片上增加自己网站的logo水印。那么如何实现这一步骤呢?首先让我们来了解

通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是在原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。以下是PHP图片加水印的转载!

参数说明:

$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);

PHP图片加水印使用说明:

芦笋演示
芦笋演示

一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

芦笋演示 34
查看详情 芦笋演示

立即学习PHP免费学习笔记(深入)”;

1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
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图片加水印的具体实现方法。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446067.htmlTechArticle一个正规的网站,在需要上传图片时,往往都会需要在图片上增加自己网站的LOGO水印。那么如何实现这一步骤呢?首先让我们来了解 通过...
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号