php上传图片加上文字水印

来源:互联网 发布:淘宝服装品牌前十名 编辑:程序博客网 时间:2024/05/21 20:29
第一次写博客,今天做了个上传图片加文字的功能,做为一个php的新手费了一个下午的时间总算也是把功能实现了,期间遇到了很多困难和各种抓瞎,为了避免以后再次抓瞎,所以我打算把它们记录下来。下面上代码页面:
<form action="index.php" method="post" enctype="multipart/form-data">    <input type="file" name="file" /><br>    <input type="submit" name="submit" value="提交"/></form>

php做上传的代码:
<?php/*include('ImageText.class.php');*/if(!empty($_FILES)){    //print_r($_FILES);    if($_FILES['file']['type']=='image/png' ||$_FILES['file']['type']=='image/jpeg' || $_FILES['file']['type']=='image/jpg' ||$_FILES['file']['type']=='image/gif' ||$_FILES['file']['type']=='image/bmp' ){        if($_FILES['file']['size'] < 204800){            $filename = $_FILES['file']['name'];            $files = explode('.',$filename);            $type = end($files);            $time = date('YmdHis');            $head = 'uploadImage/';            $destination = $time.'_'.rand(100000, 999999).'.'.$type;            move_uploaded_file($_FILES['file']['tmp_name'], $head.$destination);            $cla= new ImageText();            $im= $cla->getImageText($head.$destination);            echo '<img src="'.$head.$destination.'" rel="图片加水印文">';        }else{            return $_FILES['file']['error'] = 2;        }    }else{        return $_FILES['file']['error'] = 1;    }}?>
加文字水印的代码:
<?phpclass  ImageText{    function getImageText($destination){        //Header ('Content-type: image/jpg'); 定义页面头 表明这个页面是用来处理图片        echo $destination."<br>"; //文件名        $im = imagecreatefromjpeg($destination); //需要先开启gb库,才会有作用;关闭状态下程序进行到这里会结束,不会抛出错误也不会有任何返回值;        if($im) {            //$im = imagecreatetruecolor(500, 300); 定义一个黑色背图片            $textColor  = imagecolorallocate($im, 0, 0, 255);//设定字体颜色            $font = "C://windows/fonts/simhei.ttf";//TrueType字体路径(一般windows自带)            $text='中国mm';            // $text = mb_convert_encoding($text,'gbk','utf-8');编码转换            //iconv('gbk','utf-8',$text);同样是编码转换            //imagestring($im, 5, 0, 0, $s, $tc);这个函数图片不能输出中文字符            imagettftext($im,28,4,40,40,$textColor,$font,$text);// TrueType 字体向图像写入文本,可以输出中文            imagejpeg($im,$destination);//生成jpg各式图片            imagedestroy($im);//释放与 image 关联的内存        }else{            echo '没值';        }        return $im;    }}?>
需要注意的是在使用gb库函数时,切记要先开启php的gb库支持。
开启gb库的方法:找到php.ini文件,打开内容 找到;extension=php_gb2.dll 把最前面的分号";"去掉,再保存,如果本来就没有分号,那就不用管