仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2028|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP给图片加水印教程

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:52:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。   PHP给图片加水印绝对ASP来讲,要复杂多了,看上面代码:
/*****************************************************
参数申明:
$max_file_size : 上传文件巨细限制, 单元BYTE
$destination_folder : 上传文件途径
$watermark : 是不是附加水印(1为加水印,其他为不加水印);
利用申明:
1. 将PHP.INI文件外面的"extension=php_gd2.dll"一行后面的;号去失落,由于咱们要用到GD库;
2. 将extension_dir =改成你的php_gd2.dll地点目次;
3. http://www.knowsky.com/php.asp;
****************************************************/
//上传文件类型列表
$uptypes=array(
'image/jpg',
'image/jpeg',
'image/png',
'image/pjpeg',
'image/gif',
'image/bmp',
'image/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.xplore.cn/"; //水印字符串
$waterimg="xplore.gif"; //水印图片
$imgpreview=1; //是不是生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2; //缩略图比例
?>
<html>
<head>
<title>ZwelL图片上传法式</title>
<style type="text/CSS">
<!--
body
{
     font-size: 9pt;
}
input
{
     background-color: #66CCFF;
     border: 1px inset #CCCCCC;
}
-->
</style>
</head>
<body>
<form enctype="multipart/form-data" method="post" name="upform">
  上传文件:
  <input name="upfile" type="file">
  <input type="submit" value="上传"><br>
  答应上传的文件类型为:<?=implode(', ',&#36;uptypes)?>
</form>
<?php
if (&#36;_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (!is_uploaded_file(&#36;_FILES["upfile"][tmp_name]))
    //是不是存在文件
    {
         echo "图片不存在!";
         exit;
    }
    &#36;file = &#36;_FILES["upfile"];
    if(&#36;max_file_size < &#36;file["size"])
    //反省文件巨细
    {
        echo "文件太大!";
        exit;
    }
    if(!in_array(&#36;file["type"], &#36;uptypes))
    //反省文件类型
    {
        echo "文件类型不符!".&#36;file["type"];
        exit;
    }
    if(!file_exists(&#36;destination_folder))
    {
        mkdir(&#36;destination_folder);
    }
    &#36;filename=&#36;file["tmp_name"];
    &#36;image_size = getimagesize(&#36;filename);
    &#36;pinfo=pathinfo(&#36;file["name"]);
    &#36;ftype=&#36;pinfo['extension'];
    &#36;destination = &#36;destination_folder.time().".".&#36;ftype;
    if (file_exists(&#36;destination) && &#36;overwrite != true)
    {
        echo "同名文件已存在了";
        exit;
    }
    if(!move_uploaded_file (&#36;filename, &#36;destination))
    {
        echo "挪动文件失足";
        exit;
    }
    &#36;pinfo=pathinfo(&#36;destination);
    &#36;fname=&#36;pinfo[basename];
    echo " <font color=red>已胜利上传</font><br>文件名:  
<font color=blue>".&#36;destination_folder.&#36;fname."</font><br>";
    echo " 宽度:".&#36;image_size[0];
    echo " 长度:".&#36;image_size[1];
    echo "<br> 巨细:".&#36;file["size"]." bytes";
    if(&#36;watermark==1)
    {
        &#36;iinfo=getimagesize(&#36;destination,&#36;iinfo);
        &#36;nimage=imagecreatetruecolor(&#36;image_size[0],&#36;image_size[1]);
        &#36;white=imagecolorallocate(&#36;nimage,255,255,255);
        &#36;black=imagecolorallocate(&#36;nimage,0,0,0);
        &#36;red=imagecolorallocate(&#36;nimage,255,0,0);
        imagefill(&#36;nimage,0,0,&#36;white);
        switch (&#36;iinfo[2])
        {
            case 1:
            &#36;simage =imagecreatefromgif(&#36;destination);
            break;
            case 2:
            &#36;simage =imagecreatefromjpeg(&#36;destination);
            break;
            case 3:
            &#36;simage =imagecreatefrompng(&#36;destination);
            break;
            case 6:
            &#36;simage =imagecreatefromwbmp(&#36;destination);
            break;
            default:
            die("不撑持的文件类型");
            exit;
        }
        imagecopy(&#36;nimage,&#36;simage,0,0,0,0,&#36;image_size[0],&#36;image_size[1]);
        imagefilledrectangle(&#36;nimage,1,&#36;image_size[1]-15,80,&#36;image_size[1],&#36;white);
        switch(&#36;watertype)
        {
            case 1:   //加水印字符串
            imagestring(&#36;nimage,2,3,&#36;image_size[1]-15,&#36;waterstring,&#36;black);
            break;
            case 2:   //加水印图片
            &#36;simage1 =imagecreatefromgif("xplore.gif");
            imagecopy(&#36;nimage,&#36;simage1,0,0,0,0,85,15);
            imagedestroy(&#36;simage1);
            break;
        }
        switch (&#36;iinfo[2])
        {
            case 1:
            //imagegif(&#36;nimage, &#36;destination);
            imagejpeg(&#36;nimage, &#36;destination);
            break;
            case 2:
            imagejpeg(&#36;nimage, &#36;destination);
            break;
            case 3:
            imagepng(&#36;nimage, &#36;destination);
            break;
            case 6:
            imagewbmp(&#36;nimage, &#36;destination);
            //imagejpeg(&#36;nimage, &#36;destination);
            break;
        }
        //掩盖原上传文件
        imagedestroy(&#36;nimage);
        imagedestroy(&#36;simage);
    }
    if(&#36;imgpreview==1)
    {
    echo "<br>图片预览:<br>";
    echo "<ccid_file values="\" width=".(&#36;image_size[0]*&#36;imgpreviewsize)."
height=".(&#36;image_size[1]*&#36;imgpreviewsize);"
    echo " alt=\"图片预览:\r文件名:".&#36;destination."\r上传工夫:\" />";
    }
}
?>
</body>
</html>
你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧。
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-4 06:37:15 | 只看该作者
爱上php,他也会爱上你。
莫相离 该用户已被删除
板凳
发表于 2015-2-9 17:46:43 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-18 20:12:03 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-3-5 17:20:06 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
小女巫 该用户已被删除
6#
发表于 2015-3-11 14:01:22 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
柔情似水 该用户已被删除
7#
发表于 2015-3-15 23:06:09 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
山那边是海 该用户已被删除
8#
发表于 2015-3-21 18:20:34 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
兰色精灵 该用户已被删除
9#
发表于 2015-3-22 21:09:43 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
10#
发表于 2015-3-22 22:10:29 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
谁可相欹 该用户已被删除
11#
发表于 2015-4-6 20:08:51 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
透明 该用户已被删除
12#
发表于 2015-4-16 06:13:52 | 只看该作者
实践是检验自己会不会的真理。
爱飞 该用户已被删除
13#
发表于 2015-4-20 22:51:32 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
只想知道 该用户已被删除
14#
发表于 2015-4-21 19:03:22 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
飘飘悠悠 该用户已被删除
15#
 楼主| 发表于 2015-4-22 04:43:43 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
admin 该用户已被删除
16#
发表于 2015-4-27 15:58:07 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
活着的死人 该用户已被删除
17#
发表于 2015-7-9 16:13:11 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
若相依 该用户已被删除
18#
发表于 2015-7-13 08:22:23 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
精灵巫婆 该用户已被删除
19#
发表于 2015-7-15 01:54:04 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
因胸联盟 该用户已被删除
20#
发表于 2015-7-26 00:46:51 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 06:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表