您的位置:首页 > 编程语言 > PHP开发

php上传图片加上文字水印

2017-05-25 17:37 375 查看
第一次写博客,今天做了个上传图片加文字的功能,做为一个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;
}
}
?>
加文字水印的代码:
<?php
class  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 把最前面的分号";"去掉,再保存,如果本来就没有分号,那就不用管
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: