Home > Backend Development > PHP Tutorial > 上传图片添加水印?该怎么解决

上传图片添加水印?该怎么解决

WBOY
Release: 2016-06-13 13:38:04
Original
1432 people have browsed it

上传图片添加水印???
上传图片添加水印???


搞了个上传图片的函数(经过测试可以上传图片,这个没有问题)

现在想上传图片时添加水印图片(一个小gif)

上传图片时,网页提示函数imagecopymerge()报错,不知道哪里出了问题,大家帮我看看


上传图片函数代码:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
/*
$files为上传的图片文件
$folder为上传图片的文件夹
*/

function uploads($files,$folder)
{
    //取得图片的后缀名
    $knamearray=explode(".",$_FILES["upfile"]["name"]);
    $kname=$knamearray[count($knamearray)-1];

    //设置图片文件名为系统时间
    $filename=date('YmdHis');
    $filenames=$filename.$code.".".$kname;
    $upfile=$folder."/".$filenames;

    //上传图片
    move_uploaded_file($files,$upfile);

    //添加水印图片开始了……
    $im=imagecreatefromgif("wimages/logo.gif"); //logo.gif图片的尺寸为120*45
    imagecopymerge($upfile,$im,0,0,0,0,120,45,80); //现在提示这句有问题。。。

    return $filenames;//回传图片文件名
}

Copy after login


------解决方案--------------------
$im=imagecreatefromgif("wimages/logo.gif"); //logo.gif图片的尺寸为120*45
最好把路径换成相对的路径;
imagecopymerge($upfile,$im,0,0,0,0,120,45,80); //现在提示这句有问题。。。
楼主能不能帮我解释一下imagecopymerge的各个参数的意义啊
------解决方案--------------------
探讨
$im=imagecreatefromgif("wimages/logo.gif"); //logo.gif图片的尺寸为120*45
最好把路径换成相对的路径;
imagecopymerge($upfile,$im,0,0,0,0,120,45,80); //现在提示这句有问题。。。
楼主能不能帮我解释一下imagecopymerge的各个参数的意义啊

------解决方案--------------------
可以这样写:

 $descrition ="/upload/imag_1123323.jpg";//这个是要加水印图片的路径和文件名;

 $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);//创建新建一个真彩色图像
//$image_size为要加水印的图片大小信息的数组;

 $simage=imagecreatefromgif($destination); //把要加水印的图片已gif格式读入;

 imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
//把要加水印的拷贝到创建的真彩色图像上;
 imagedestroy($simage); //销毁
 $simage1 = imagecreatefromgif("wimages/logo.gif")// 这个路径估计要弄对
//把水印图片读入
 imagecopy($nimage,$simage1,0,0,0,0,85,15); //把水印也拷贝到上面;
 

 imagejpeg($nimage,$descrtion); //把三个图片叠加得到的新图片保存为原来没有水印的图片

 imagedestroy($nimage); //销毁
 imagedestroy($simage);
------解决方案--------------------
最近我用网上的来修改,弄了一个,做成类,,
用这个类,可以做出多张图片上传。。。。
PHP code
class upimg{  //该类用来实现上传$uptypes数组内类型的图片,可以通过setWaterMark()启用设置水印 <br>  <br>  /** <br>   * <br>   * 则在图片上加水印; <br>   * 外部通过访问$msg ,$img_width, $img_height ,$save_dir,$img_size变量 <br>   * 获取图片在上传过程中出现的错误,和图片上传后保存的路径,图片大小等信息; <br>   */ <br> private $uptypes = array('image/gif','image/jpg','image/jpeg','image/png','image/pjpeg');//'image/bmp','image/x-png'); <br> private $max_file_size = 200000; <br> private $dir_folder = "../imageupload/"; <br> private $water_mark = 1; <br> private $water_type = 1; <br> private $water_str = "http://www.516ya.cn"; <br> private $water_img = "xplore.gif"; <br> private $create_water= false; <br> private $overwrite = false; <br>  <br> public $msg=""; <br> public $img_width=0; <br> public $img_height=0; <br> public $save_dir=""; <br> public $img_size=0; <br> public $sucess =false; <br>  <br> function setWaterMark(){ <br> 	 $this->create_water = true; <br> } <br>  <br> function startUpload($files){ <br>  <br>  <br>   if(!is_uploaded_file($files['tmp_name'])) <br>  { <br>     $this->msg.="图片不存在!--";
                 
              
              
        
            
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template