飘飘悠悠 发表于 2015-2-3 23:52:16

PHP网站制作之PHP给图片加水印教程

小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和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"]))
    //是不是存在文件
    {
         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;
    echo " <font color=red>已胜利上传</font><br>文件名:
<font color=blue>".&#36;destination_folder.&#36;fname."</font><br>";
    echo " 宽度:".&#36;image_size;
    echo " 长度:".&#36;image_size;
    echo "<br> 巨细:".&#36;file["size"]." bytes";
    if(&#36;watermark==1)
    {
      &#36;iinfo=getimagesize(&#36;destination,&#36;iinfo);
      &#36;nimage=imagecreatetruecolor(&#36;image_size,&#36;image_size);
      &#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)
      {
            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,&#36;image_size);
      imagefilledrectangle(&#36;nimage,1,&#36;image_size-15,80,&#36;image_size,&#36;white);
      switch(&#36;watertype)
      {
            case 1:   //加水印字符串
            imagestring(&#36;nimage,2,3,&#36;image_size-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)
      {
            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*&#36;imgpreviewsize)."
height=".(&#36;image_size*&#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

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

愤怒的大鸟 发表于 2015-3-5 17:20:06

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

小女巫 发表于 2015-3-11 14:01:22

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

柔情似水 发表于 2015-3-15 23:06:09

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

山那边是海 发表于 2015-3-21 18:20:34

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

兰色精灵 发表于 2015-3-22 21:09:43

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

仓酷云 发表于 2015-3-22 22:10:29

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

谁可相欹 发表于 2015-4-6 20:08:51

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

透明 发表于 2015-4-16 06:13:52

实践是检验自己会不会的真理。

爱飞 发表于 2015-4-20 22:51:32

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

只想知道 发表于 2015-4-21 19:03:22

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

飘飘悠悠 发表于 2015-4-22 04:43:43

写的比较杂,因为我也是个新手,不当至于大家多多指正。

admin 发表于 2015-4-27 15:58:07

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

活着的死人 发表于 2015-7-9 16:13:11

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

若相依 发表于 2015-7-13 08:22:23

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

精灵巫婆 发表于 2015-7-15 01:54:04

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

因胸联盟 发表于 2015-7-26 00:46:51

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
页: [1] 2
查看完整版本: PHP网站制作之PHP给图片加水印教程