当前位置: 首页 > news >正文

简述企业网站如何推广哈尔滨网站开发电话

简述企业网站如何推广,哈尔滨网站开发电话,济宁网站建设(,单页面个人网站最近写需求#xff0c;遇到要给图片加水印的需求。 刚开始想的方案是给图片上覆盖一层水印照片#xff0c;但是这样的话用户直接下载图片水印也会消失。 后来查资料发现用 canvas 就可以给图片加水印#xff0c;下面是处理过程。 首先我们要确认图片的格式#xff0c;我们通… 最近写需求遇到要给图片加水印的需求。 刚开始想的方案是给图片上覆盖一层水印照片但是这样的话用户直接下载图片水印也会消失。 后来查资料发现用 canvas 就可以给图片加水印下面是处理过程。 首先我们要确认图片的格式我们通过 input 上传的图片格式一般是 File File 对象是特殊类型的 Blob即 Blob 格式。 这样的话我们需要先把 Blob 文件转成 img 标签先通过 FileReader 读取文件通过 reader.readAsDataURL 获得文件 Base 64 编码 URL 地址拿到 URL 后生成 img 标签。 1. Blob 文件转成 img 标签 // blob 文件格式转成 img 标签const blobToImg (blob) {return new Promise((resolve, reject) {const reader new FileReader()reader.readAsDataURL(blob)reader.onload () {let img new Image()img.src reader.resultimg.addEventListener(load, () resolve(img))}})}这里要注意如果使用 addEventListener 需要先注册事件监听。 const blobToImg (blob) {return new Promise((resolve, reject) {const reader new FileReader()reader.addEventListener(load, () {let img new Image()img.src reader.resultimg.addEventListener(load, () resolve(img))})reader.readAsDataURL(blob)})}2. img 标签转成 canvas // 将img内容绘制到canvas画布imgToCanvas(img) {const canvas document.createElement(canvas)canvas.width img.widthcanvas.height img.heightconst context canvas.getContext(2d)context.drawImage(img, 0, 0)return canvas}3. 在 canvas 画布上绘制水印 水印通过 ctx.createPattern(image, repetition) 方法来进行重复绘制由于 image 参数要是是 img 标签格式或者 canvas 文件格式所以我们可以让 UI 老师生成一个水印的图片或者我们用 canvas 自己画一个水印的图片进行复制。 如果我们需要直接生成图片来进行展示那我们可以用 canvas.toDataURL() 直接从 canvas 生成图片地址。 如果需要生成 Blob 格式传给后端那我们可以用 canvas.toBlob() 方法从 canvas 生成 Blob 文件格式传给后端。 // canvas画布上绘制水印waterMark(canvas) {return new Promise((resolve, reject) {const ctx canvas.getContext(2d)// 绘制水印 canvasconst canvasWater this.drawWaterCanvas(已失效)// 绘制重复的水印ctx.fillStyle ctx.createPattern(canvasWater, repeat)ctx.fillRect(0, 0, canvas.width, canvas.height)// 这里我需要直接展示所以就直接生成图片地址resolve(canvas.toDataURL())})},drawWaterCanvas(str) {const canvasWater document.createElement(canvas)canvasWater.width 400canvasWater.height 400const ctxWater canvasWater.getContext(2d)ctxWater.textAlign leftctxWater.textBaseline middlectxWater.font 32px Microsoft YaheictxWater.fillStyle rgba(0, 0, 0, 0.3)ctxWater.rotate((-20 * Math.PI) / 180)ctxWater.fillText(str, 10, 80)return canvasWater}4. VUE 中实际应用 templatedivimg :srcimgUrl alt //div /templatescript import loppy from ./assets/loppy.jpgexport default {data() {return {imgUrl: }},created() {const img new Image()img.src loppyimg.onload async () {const canvas this.imgToCanvas(img)const url await this.waterMark(canvas)this.imgUrl url}},methods: {// 将img内容绘制到canvas画布imgToCanvas(img) {const canvas document.createElement(canvas)canvas.width img.widthcanvas.height img.heightconst context canvas.getContext(2d)context.drawImage(img, 0, 0)return canvas},// canvas画布上绘制水印并转换为blob对象waterMark(canvas) {return new Promise((resolve) {const ctx canvas.getContext(2d)// 绘制水印 canvasconst canvasWater this.drawWaterCanvas(图片已失效)// 绘制重复的水印ctx.fillStyle ctx.createPattern(canvasWater, repeat)ctx.fillRect(0, 0, canvas.width, canvas.height)resolve(canvas.toDataURL())})},drawWaterCanvas(str) {const canvasWater document.createElement(canvas)canvasWater.width 500canvasWater.height 500const ctxWater canvasWater.getContext(2d)ctxWater.textAlign leftctxWater.textBaseline middlectxWater.font 32px Microsoft YaheictxWater.fillStyle rgba(0, 0, 0, 0.3)ctxWater.rotate((-20 * Math.PI) / 180)ctxWater.fillText(str, 10, 200)ctxWater.fillText(new Date().toLocaleString(), 10, 300)return canvasWater}} } /scriptstyle langscss scoped img {width: 200px;height: 200px; } /style
http://wiki.neutronadmin.com/news/28668/

相关文章:

  • 做短连接的网站自己编写的网站如何放到wordpress
  • 企业进行网站建设的方式深圳做男装什么网站容易找工
  • 十大免费ppt模板免费下载网站在网站里文本链接怎么做
  • 做自适应网站注意事项做网站所具备的的条件
  • 湖北建设科技中心网站用什么做网站方便
  • 网站设计宽屏装饰公司网站源码下载
  • 如何做网站轮播图和菜单全屏汕头网站建设方案书
  • 网站快照不更新了响应式网站制作教程
  • 微信上建微网站要钱吗湖州网
  • 广告公司网站首页设计页面青海个人旅游网站建设
  • 专业的企业网站优化公司dw做网站的所有流程
  • 自己做网站 赚钱网站建设都包含什么步骤
  • 德兴网站建设公司做网站 怎么做留言
  • 二手交易网站开发系统湖南网络营销外包
  • 百度网站收录网页设计类官网
  • 国际站seo优化是什么意思河北省住房城乡建设局网站首页
  • 为什么做美食视频网站百度官网网站首页
  • 东莞网站设计哪家好无锡网站建设价格最优
  • 南宁模板做网站网站开发费税率是多少
  • ai logo设计网站wordpress 用的什么框架
  • 深圳市建设行业主管部门官方网站ev123建站
  • 成都爱站网seo站长查询工具运营商大数据精准营销获客
  • 网站免费制作营口网站建设求职简历
  • 网站首页的尺寸哪些是网站建设
  • 旅游网站建设问题wordpress 关键词描述
  • 通州区网站建设公司wordpress侧边栏怎么加php代码
  • 潮州专业网站建设制作做淘客网站备案
  • linux新建网站小清新网站源码
  • 如何为企业做网站wordpress怎么弄登录
  • 做展览的网站网站做迅雷下载链接