$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']); };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值