首頁 >後端開發 >php教程 >上传图片添加水印?该怎么解决

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

WBOY
WBOY原創
2016-06-13 10:15:34978瀏覽

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


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

现在想上传图片时添加水印图片(一个小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;//回传图片文件名}


------解决方案--------------------
$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.="图片不存在!--";<div class="clear">
                 
              
              
        
            </div>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn