首页 > php图像处理 > php图片上传加水印,自动增加水印

php图片上传加水印,自动增加水印

这是一款完美的php文件上传代码,图片上传成功后并自动给图片增加上水印,这样很好的快速的提高的了要手工一张张增加水印效果,代码如下:

<?php
function upload($uploadfile, $watermark = 1, $watertype = 1, $content) {
    foreach ($uploadfile['name'] as $key => $name) { //多文件上传函数
        uploadall($uploadfile, $key, $watermark, $watertype, $content);
    }
}
function uploadall($uploadfile, $i, $watermark, $watertype, $content) {
    $watermark = $watermark; //是否附加水印(1为加水印,其他为不加水印);
    $watertype = $watertype; //水印类型(1为文字,2为图片)
    $watercontent = $content; //水印的内容
    if (emptyempty($uploadfile['name'][$i])) {
        die("未选择文件上传");
    }
    if ($uploadfile['error'][$i] == 2) { //验证html判断结果
        die("上传的文件太大了");
    }
    $allow_filemaxsize = 2048000; // 2m
    $filesize = $uploadfile['size'][$i];
    if ($filesize > $allow_filemaxsize) {
        die("上传的文件太大了");
    }
    $allow_filetypes = array(
        "jpeg",
        "gif",
        "png",
        "jpg",
        "pjpeg"
    ); //允许上传的文件统一资源类型 mimetype
    $allow = false; //默认都不允许
    $mimetype = $uploadfile['type'][$i]; //上传文件的mime文件类型
    foreach ($allow_filetypes as $t) {
        if (strpos($mimetype, $t) !== false) {
            $allow = true; //找到了符合上传条件的文件类型
            break;
        }
    }
    if ($allow == false) {
        die("上传的文件类型不被允许");
    }
    $result = is_uploaded_file($uploadfile['tmp_name'][$i]); //判断是否为上传动作产生的
    if (!$result) {
        die("上传的文件有误");
    }
    $uploaddir = "img/"; //上传文件保存目录
    if (!file_exists($uploaddir)) mkdir($uploaddir, 0777, true); //若上传保存目录不存在,则递归创建
    /**重命名文件**/
    $filetype = explode(".", $uploadfile['name'][$i]);
    $filetype = array_pop($filetype);
    $uploadfilename = time() . "." . $filetype;
    $_session['filename'] = $uploadfilename;
    //end
    $result = move_uploaded_file($uploadfile['tmp_name'][$i], $uploaddir . $uploadfilename);
    if ($result) {
        echo "文件上传成功";
    } else {
        switch ($uploadfile['error'][$i]) {
            case 1:
                return "上传的文件超出了php.ini中设定的最大值";
                break;
            case 2:
                return "上传的文件超出了html中设定的最大值";
                break;
            case 3:
                return "文件只有部分被上传";
                break;
            case 4;
            return "没有文件被上传";
            break;
        default:
            die("文件上传失败");
    }
}
if ($watermark == 1) {
    $iinfo = getimagesize($uploaddir . $uploadfilename); //获取图片的相关信息,得到数组
    $nimage = imagecreatetruecolor($iinfo[0], $iinfo[1]);
    $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[2]) {
        case 1:
            $simage = imagecreatefromgif($uploaddir . $uploadfilename);
            break;
        case 2:
            $simage = imagecreatefromjpeg($uploaddir . $uploadfilename);
            break;
        case 3:
            $simage = imagecreatefrompng($uploaddir . $uploadfilename);
            break;
        case 6:
            $simage = imagecreatefromwbmp($uploaddir . $uploadfilename);
            break;
        default:
            die("不支持的文件类型");
            exit;
    }
    imagecopy($nimage, $simage, 0, 0, 0, 0, $iinfo['0'], $iinfo['1']);
    switch ($watertype) {
        case 1: //加水印字符串
            imagestring($nimage, 5, $iinfo['0'] / 2 - 50, $iinfo['1'] - 30, $watercontent, $black);
            break;
        case 2: //加水印图片
            $simage1 = imagecreatefromgif($watercontent);
            $size = getimagesize($watercontent);
            imagecopy($nimage, $simage1, $iinfo['0'] / 2 + 50, $iinfo['1'] - 100, 0, 0, $size[0], $size[1]);
            imagedestroy($simage1);
            break;
    }
    switch ($iinfo[2]) {
        case 1:
            imagejpeg($nimage, $uploaddir . $uploadfilename); //将图像$nimage以$destination文件名创建一个jpeg的格式文件
            break;
        case 2:
            imagejpeg($nimage, $uploaddir . $uploadfilename);
            break;
        case 3:
            imagepng($nimage, $uploaddir . $uploadfilename);
            break;
        case 6:
            imagewbmp($nimage, $uploaddir . $uploadfilename);
            break;
    }
    imagedestroy($nimage); //覆盖原上传文件
    imagedestroy($simage);
} 
}
if (@$_get['act'] == "insert") { //未作参数校验
    //该函数的四个参数分别是:上传控件的name值;是否加水印(1为加,其他数字为不佳);
    //水印的类型(1为字符串,2为图片);水印的内容,字符串时写数据,图片时写图片的地址;
    $picture = upload($_files['picture'], 1, 2, "img/watermark.gif"); //上传文件,并返回上传后的文件路径名
}
?>

上传代码如下:

<form method="post" action="" enctype="multipart/form-data"> 
 <table border="1" cellpadding="5" cellspacing="0"> 
  <tr> 
   <td>产品图片:</td> 
   <td><input type="hidden" name="max_file_size" value="1024000"> 
    <input type="file" name="picture[]"> 
   </td> 
  </tr> 
  <tr> 
   <td colspan="2" align="center"><input type="submit" value="提交"></td> 
  </tr> 
 </table> 
</form>


教程地址:http://www.phprm.com/tuxiang/fs5109.html

欢迎转载!但请带上文章地址^^

标签:php图片上传 php增加水印

相关文章

发表留言