1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php上传图片并添加水印

php上传图片并添加水印

时间:2023-09-03 02:16:03

相关推荐

php上传图片并添加水印

效果图如下:

index.html代码如下:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>上传图片加水印</title></head><body><!-- action为空表示提交到当前页面 enctype编码格式 --><form action="" method="post" enctype="multipart/form-data"><!-- 上传文件的名称为img --><input type="file" name="img" value="image/*"><button type="submit" name="button">上传图片加水印</button></form></body></html>

index.php代码如下:

<?php//获取图片信息函数function get_image_contents($file){$data['img'] = file_get_contents($file);if( !$data['img'] ){return false;};$data['size'] = getimagesize($file);return $data;};//生成水印并上传图片函数function upload_watermark_image($file,$output_dir = './output_img/',$alpha = 20,$logo_dir= './watermark/logo.png'){$file_type = explode('/',$file['type']);//判断文件类型 正则匹配if(!preg_match('/^image/',$file_type[0])){return false;};//获取水印logo图片信息$logo_info = get_image_contents($logo_dir);//是否获取失败if( !$logo_info )return false;//获取水印logo图片宽高list($logo_width,$logo_height) = $logo_info['size'];//打开上传的图像信息$up_img_info = get_image_contents($file['tmp_name']);//是否获取失败if(!$up_img_info )return false;//获取水印logo图片宽高list($img_width,$img_height) = $up_img_info['size'];//imagecreatefromstring — 从字符串中的图像流新建一图像 生成水印 与 生成上传图片$logo = imagecreatefromstring($logo_info['img']);$img = imagecreatefromstring($up_img_info['img']);//生成的水印在右下角(10,10)位置$dis_x = $img_width - $logo_width - 10;$dis_y = $img_height - $logo_height - 10;//imagecopymerge(上传图片,水印,位置,水印宽,水印高,透明度0~100) — 拷贝并合并图像的一部分imagecopymerge($img,$logo,$dis_x,$dis_y,0,0,$logo_width,$logo_height,$alpha);//上传图片的种类$img_types = ['jpeg','png','gif','webp'];//获取图片后缀 是否在种类内 不是默认上传png格式图片$img_type = (in_array($file_type[1],$img_types)) ? $file_type[1] : 'png';//设置上传不同图片的函数名调用 .号是字符串连接符$save_img_name = 'image'.$img_type;//保存图片路径名称$img_path = $output_dir.uniqid().'.'.$img_type;//该目录是否存在 || 不存在创建该目录is_dir($output_dir) || mkdir($output_dir);//上传生成好的有水印图片 如:imagepng(上传的图片,上传的路径)$save_img_name($img,$img_path);//用完后 销毁与内存关联的图像资源imagedestroy($img);imagedestroy($logo);//输出上传的图片地址return $img_path;}//empty():检查一个变量是否为空 / $_FILES数组:接收上传的文件if(empty($_FILES)){//提交的文件是否为空//没有文件则显示提交页面include 'index.html';}else{$name = 'img';//获取上传的图片信息$file = $_FILES[$name];$output_img = upload_watermark_image($file);if($output_img){echo "<img src='".$output_img." ' /> <br>";}else{echo "这不是图片文件";}//原图//imagecreatefromstring — 从字符串中的图像流新建一图像 //file_get_contents — 将整个文件读入一个字符串 ($file['tmp_name']是图片地址)$dst_image = imagecreatefromstring(file_get_contents($file['tmp_name']));//获取图片宽高list($file_width,$file_height) = getimagesize($file['tmp_name']);};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。