深爱那片海 发表于 2015-2-4 00:14:13

PHP网站制作之PHP 加水印

小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。   <?php
/******************************************************************************
参数申明:
$max_file_size: 上传文件巨细限制, 单元BYTE
$destination_folder : 上传文件途径
$watermark   : 是不是附加水印(1为加水印,其他为不加水印);
利用申明:
1. 将PHP.INI文件外面的"extension=php_gd2.dll"一行后面的;号去失落,由于咱们要用到GD库;
2. 将extension_dir =改成你的php_gd2.dll地点目次;
******************************************************************************/
//上传文件类型列表
$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=2;      //水印类型(1为文字,2为图片)
$waterposition=1;   //水印地位(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="http://www.xrss.cn/";//水印字符串
$waterimg="mzone.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(', ',$uptypes)?>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (!is_uploaded_file($_FILES["upfile"]))
    //是不是存在文件
    {
         echo "图片不存在!";
         exit;
    }
    $file = $_FILES["upfile"];
    if($max_file_size < $file["size"])
    //反省文件巨细
    {
      echo "文件太大!";
      exit;
    }
    if(!in_array($file["type"], $uptypes))
    //反省文件类型
    {
      echo "文件类型不符!".$file["type"];
      exit;
    }
    if(!file_exists($destination_folder))
    {
      mkdir($destination_folder);
    }
    $filename=$file["tmp_name"];
    $image_size = getimagesize($filename);
    $pinfo=pathinfo($file["name"]);
    $ftype=$pinfo['extension'];
    $destination = $destination_folder.time().".".$ftype;
    if (file_exists($destination) && $overwrite != true)
    {
      echo "同名文件已存在了";
      exit;
    }
    if(!move_uploaded_file ($filename, $destination))
    {
      echo "挪动文件失足";
      exit;
    }
    $pinfo=pathinfo($destination);
    $fname=$pinfo;
    echo " <font color=red>已胜利上传</font><br>文件名:<font color=blue>".$destination_folder.$fname."</font><br>";
    echo " 宽度:".$image_size;
    echo " 长度:".$image_size;
    echo "<br> 巨细:".$file["size"]." bytes";
    if($watermark==1)
    {
      $iinfo=getimagesize($destination,$iinfo);
      $nimage=imagecreatetruecolor($image_size,$image_size);
      $white=imagecolorallocate($nimage,255,255,255);
      $black=imagecolorallocate($nimage,0,0,0);
      $red=imagecolorallocate($nimage,255,0,0);
      imagefill($nimage,0,0,$white);
      switch ($iinfo)
      {
            case 1:
            $simage =imagecreatefromgif($destination);
            break;
            case 2:
            $simage =imagecreatefromjpeg($destination);
            break;
            case 3:
            $simage =imagecreatefrompng($destination);
            break;
            case 6:
            $simage =imagecreatefromwbmp($destination);
            break;
            default:
            die("不撑持的文件类型");
            exit;
      }
      imagecopy($nimage,$simage,0,0,0,0,$image_size,$image_size);
      imagefilledrectangle($nimage,1,$image_size-15,80,$image_size,$white);
      switch($watertype)
      {
            case 1:   //加水印字符串
            imagestring($nimage,2,3,$image_size-15,$waterstring,$black);
            break;
            case 2:   //加水印图片
            $simage1 =imagecreatefromgif($waterimg);
            imagecopy($nimage,$simage1,0,0,0,0,85,15);
            imagedestroy($simage1);
            break;
      }
      switch ($iinfo)
      {
            case 1:
            //imagegif($nimage, $destination);
            imagejpeg($nimage, $destination);
            break;
            case 2:
            imagejpeg($nimage, $destination);
            break;
            case 3:
            imagepng($nimage, $destination);
            break;
            case 6:
            imagewbmp($nimage, $destination);
            //imagejpeg($nimage, $destination);
            break;
      }
      //掩盖原上传文件
      imagedestroy($nimage);
      imagedestroy($simage);
    }
    if($imgpreview==1)
    {
    echo "<br>图片预览:<br>";
    echo "<img src=\"".$destination."\" width=".($image_size*$imgpreviewsize)." height=".($image_size*$imgpreviewsize);
    echo " alt=\"图片预览:\r文件名:".$destination."\r上传工夫:\">";
    }
}
?>
</body>
</html>


exit来实现结束后面的PHP语句的执行,缩小调试范围,特别是数据库交互的程序,先输出个SQL语句看看,对了,再分析怎么会插入/删除不成功呢?这样对查错很有帮助。

分手快乐 发表于 2015-2-4 10:04:14

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

不帅 发表于 2015-2-6 15:52:26

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

因胸联盟 发表于 2015-2-16 23:12:18

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

简单生活 发表于 2015-3-5 11:39:19

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

海妖 发表于 2015-3-12 05:04:08

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

飘飘悠悠 发表于 2015-3-20 23:52:51

爱上php,他也会爱上你。

飘灵儿 发表于 2015-3-21 21:37:19

使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的

精灵巫婆 发表于 2015-3-26 22:31:15

基础有没有对学习php没有太大区别,关键是兴趣。

透明 发表于 2015-4-6 09:52:51

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

小女巫 发表于 2015-4-8 11:53:55

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

只想知道 发表于 2015-4-21 22:13:08

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

第二个灵魂 发表于 2015-5-6 01:11:22

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

活着的死人 发表于 2015-6-17 04:59:03

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。

谁可相欹 发表于 2015-6-19 17:17:15

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

兰色精灵 发表于 2015-6-20 19:26:12

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

小魔女 发表于 2015-6-28 08:06:11

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

爱飞 发表于 2015-6-28 18:57:06

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

小妖女 发表于 2015-7-1 22:26:40

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

冷月葬花魂 发表于 2015-7-6 00:49:12

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
页: [1]
查看完整版本: PHP网站制作之PHP 加水印