今天项目有这么一个需求,简单实现了一下,当然用起来是没有任何问题的,现在把实现代码分享给小伙伴们

public function uploadImgToQiniu($picture_id){$waterImg = './upload/picture/water/**.png';//这个是水印图片,直接放到服务器即可$img = './upload/picture/'.$pictureInfo['path'];//原图$waterImg = $this->createImgWaterMark($img, $waterImg);$imgUrl = 'https://'.$_SERVER['SERVER_NAME'].substr($waterImg,1);// 需要填写你的 Access Key 和 Secret Key,去七牛申请一个账号$accessKey = "****************";$secretKey = "****************";// 读取图片内容$imageData = file_get_contents($imgUrl);$auth  = new Auth($accessKey, $secretKey);// 要上传的空间,根据自己需要在七牛云创建即可$bucket = "*****";$token = $auth->uploadToken($bucket);// 上传到七牛后保存的文件名$key = date('YmdHis').mt_rand(0,99999).'.jpg';$uploadMgr = new UploadManager();$mime  = 'image/jpeg';list($rest, $err) = $uploadMgr->put($token, $key, $imageData, null, $mime);if($err !== null){return  false;}else{//删除本地图片及数据存储数据$this->modelPicture->where(['id'=>$picture_id])->delete();//这行代码需要自己调整,不要照抄unlink(substr($waterImg,2));return  "http://www.*****.com/".$key;//图片在七牛云存放的地址}}
/*** 图片加水印(适用于png/jpg/gif格式)* @param $srcImg 原图片* @param $waterImg 水印图片* @param $savepath 保存路径* @param $savename 保存名字* @param $positon 水印位置* 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右* @param $alpha 透明度 -- 0:完全透明, 100:完全不透明** @return 成功 -- 加水印后的新图片地址*          失败 -- -1:原文件不存在, -2:水印图片不存在, -3:原文件图像对象建立失败*          -4:水印文件图像对象建立失败 -5:加水印后的新图片保存失败*/function createImgWaterMark($srcImg, $waterImg, $savepath=null, $savename=null, $positon=5, $alpha=30){$temp = pathinfo($srcImg);$name = $temp['basename'];$path = $temp['dirname'];$exte = $temp['extension'];$savename = $savename ? $savename : $name;$savepath = $savepath ? $savepath : $path;$savefile = $savepath .'/'. $savename;$srcinfo = @getimagesize($srcImg);if (!$srcinfo) {return -1; //原文件不存在}$waterinfo = @getimagesize($waterImg);if (!$waterinfo) {return -2; //水印图片不存在}$srcImgObj = $this->image_create_from_ext($srcImg);if (!$srcImgObj) {return -3; //原文件图像对象建立失败}$waterImgObj = $this->image_create_from_ext($waterImg);if (!$waterImgObj) {return -4; //水印文件图像对象建立失败}switch ($positon) {//1顶部居左case 1: $x=$y=0; break;//2顶部居右case 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0; break;//3居中case 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2; break;//4底部居左case 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1]; break;//5底部居右case 5: $x = $srcinfo[0]-$waterinfo[0]; $y = $srcinfo[1]-$waterinfo[1]; break;default: $x=$y=0;}imagecopymerge($srcImgObj, $waterImgObj, $x, $y, 0, 0, $waterinfo[0], $waterinfo[1], $alpha);switch ($srcinfo[2]) {case 1: imagegif($srcImgObj, $savefile); break;case 2: imagejpeg($srcImgObj, $savefile); break;case 3: imagepng($srcImgObj, $savefile); break;default: return -5; //保存失败}imagedestroy($srcImgObj);imagedestroy($waterImgObj);return $savefile;}function image_create_from_ext($imgfile){$info = getimagesize($imgfile);$im = null;switch ($info[2]) {case 1: $im=imagecreatefromgif($imgfile); break;case 2: $im=imagecreatefromjpeg($imgfile); break;case 3: $im=imagecreatefrompng($imgfile); break;}return $im;}

实现起来是不是很简单,总体来说,我实现的方式是先将图片上传到服务器,进行添加水印,添加完成之后将加水印图片再上传到七牛云,当然最后要把服务器上存储的图片删掉。

希望我的分享能够给小伙伴们带来方便!

PHP图片加水印,然后将加水印的图片上传到七牛云相关推荐

  1. java 二维码与海报合成图片并上传至七牛云

    简单的二维码与图片合成 效果如下: 准备步骤: 第一步毋庸置疑准备图片 第二步整合二维码项目依赖(这里我们使用的是google.zxing,当然市面上开源的二维码项目很多,你可自行选择) GitHub ...

  2. 【Go实战 | 电商平台】(7) 图片上传到七牛云

    文章目录 1. 获取配置信息 2. config 3. upload 完整代码 这一章节中我们介绍如何把图片上传到七牛云,并且返回对应图片的 url .因为后续我们的创建的商品,更换头像等等都是把我们 ...

  3. 将base64编码图片上传到七牛云

    将base64编码图片上传到七牛云 接口说明 FAQ >对象存储 >上传下载> 如何上传base64编码图片到七牛云 在七牛云FAQ上有一篇文章,讲解的接口的使用 https://d ...

  4. 调用图片文件夹中的任意图片随机显示_hexo框架下,实现图片一键式上传到七牛云

    在使用hexo框架驱动个人博客时,图片的插入是一个比较费心的事情 以我为例,我使用hexo+Github搭建个人独立博客 但是Github仓库提供的存储空间是有限的,如果把图片保存到本地(对应的是Gi ...

  5. java实现后台直接生成二维码图片并直接上传到七牛云上面

    java实现后台直接生成二维码图片并直接上传到七牛云上面 需求:后台是直接根据唯一核销码生成图片,然后的话直接上传到七牛云,数据库只是保存地址,一开始也想错了,想成了创建临时文件存储生成的图片再上传到 ...

  6. php(TP5)图片无损压缩上传到七牛云

    php图片无损压缩上传到七牛云 private $image; //重绘图片private $imageinfo; //重绘图片的具体信息(array)private $percent = 1; // ...

  7. 二维码生成并上传至七牛云 返回图片URL

    背景:最近一个项目的优惠券模块,需要将优惠券的券号转换成二维码展示出来,并保证能够被扫码枪识别. 接着,简要说明下编码思路,或者说步骤: 引入 qrcode 的Jar依赖 调用API,合理配置相关属性 ...

  8. Spring Boot使用Simditor富文本编辑器,并将图片上传到七牛云。

    开始之前,需要强调的是Simditor富文本编辑器是基于Jquery的.所以必须引入Jquery.Simditor下载地址 下载解压后会发现是整个simditor项目,很多东西项目根本不需要,只需要将 ...

  9. php七牛云批量上传,七牛云——批量将本地图片上传到七牛云

    前言 在本地大概有10w左右的头像图片,打算批量上传到七牛云,寻找后发现了一个神奇的官方工具,十分的好用 工具 资源批量上传和多文件上传 我这里上传本地用的是QsunSync QsunSync Git ...

最新文章

  1. CES上百度无人车队炫技,陆奇要用“China speed”改变世界
  2. 一文搞定cookie,session,token
  3. [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
  4. tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)
  5. 以游戏演绎1200多年前的古诗——《画境长恨歌》叙事设计思路分享
  6. [Python人工智能] 三十三.Bert模型 (2)keras-bert库构建Bert模型实现文本分类
  7. Javascript 解析,格式化日期
  8. mysql 计算近30天总金额_MySQL数分实战:咖啡店精细化运营
  9. 2010年的最后一天,我又辞工(日记)
  10. Jump Desktop for Mac(远程桌面控制工具)怎么链接windows电脑
  11. iconv的用法,'GBK'转'utf-8'
  12. mysql分组函数及其用例
  13. 脑语言v0.5.8 2500令【单字编程】
  14. matlab命令窗口双大于号不显示了 回车命令不管用了,怎么改才能恢复
  15. 使用java进行远程控制,java实现远程控制
  16. SEO优化-SEO具体方法,SEO干货分享
  17. K8S集群中Pod挂载Storageclass存储卷异常排查思路
  18. 路径跟踪与轨迹跟踪概念
  19. swoole 2.x使用php什么版本,Think-Swoole 教程(二)安装
  20. 一致 先验分布 后验分布_先验分布、后验分布、似然估计这几个概念是什么意思,它们之间的关系是什么?...

热门文章

  1. SSD-MobileNetv2之Ubuntu18.04训练VOC格式数据集-超详细
  2. 数学建模——插值算法(分段三次埃尔米特插值、三次样条插值)思想及Matlab实现
  3. 内存 ECC 校验错误
  4. [nlp] GPT T5
  5. CS61B - Iterator
  6. .Net中初步了解ORM框架
  7. OCA、OCP、OCM傻傻分不清?
  8. 微信小程序open蓝牙失败
  9. PCB 自动发送邮件---加入表格实现方法
  10. Android studio中TextView改变字体的两种方式(如仿宋、隶书)