欢迎您访问南京安优网络官方网站,本公司专注于:网站制作、小程序开发、网站推广。 24小时服务热线:400-8793-956
当前位置:南京网站制作公司 > 资讯中心 > 网站知识
小程序小部件完整显示图片[画布。的drawImage]
来源:南京网站制作 时间:2019-07-22 07:34:19

 问题描述

出现问题
对于微信小程序,dramImage的默认图像参考在画布处理中是不完整的
 
导入初始项目
打开链接(原官方网站示例),浏览器唤醒微信开发工具,在打开连接之前,需要下载微信开发者工具,如果已安装,直接唤醒,如果没有,则会提示您下载它。
目的
通过修改画布的绘制过程或画布样式,可以实现完全显示和调整不同模型的目的。
 
南京小程序开发安优网络带来的解决方案:
 
Page({
   data:{
     ImgSrc:', // need to process picture addresses
     ImgW:',//canvas width
     ImgH:',// canvas height
     Byclear: 1 // ratio, where the iPhon 6 - 375 pixels are set to 1 standard for adaptive conversion
   },
   onReady() {
    var that = this
    // Calculate the standard scale according to the width of the screen. Here we talk about 375 as a standard value.
    wx.getSystemInfo({
      success: function(res) {
        let byclear = res.screenWidth / 375
        that.setData({
          byclear
        })
      },
    })
   },
   OpenAndDraw () {// Select Pictures
    var that = this
    wx.chooseImage({
      success: (res) => {
        that.setData({
          imgSrc: res.tempFilePaths[0],
          res
        })
      }
    })
   },
   checkwh(e) {
    // Processing logic
   }
  })
获取所选目标图像的宽度和高度?
默认画布无法获取图像的高度。此外,applet中没有新的image()方法。它只能通过标签组件图像间接获得。所以我们需要在wxml中插入一个隐藏的标签图像。我们设置隐藏的方法。display:none也许hidden这就是全部。小心不要。wx:if,wx:if不会触发bindload事件。
 
  <image bindload='checkwh' mode='widthFix' hidden/>
  <canvas canvas-id="canvasIn" class="canvas"></canvas>
在方法checkwh中,您可以获得图片的宽度和高度。
 
checkwh(e){
     // Real width e.detail.width height e.detail.height
     let whsrc = e.detail.height / e.detail.width
     // Calculate height and width, need to deal with the image width less than the screen width when the corresponding canvas ratio
     
  }
帆布。规模计划
dramImage通过绘图,我们可以放大和缩小画布。scale要完成绘图,请继续处理checkwh。比例缩放比例非常简单,我们只需要计算屏幕与图片的实际比例,对应减少。也就是说:375 * byclear / e.detail.width在这里,我们需要采取自适应比例,当然,对于图像宽度小于屏幕,我们不做变焦处理。
 
checkwh(e){
     // Real width e.detail.width height e.detail.height
    let whsrc = e.detail.height / e.detail.width
     // Computing height and width, we need to deal with the canvas ratio when the width of the picture is larger than the width of the screen.
    let res = this.data.res 
    let byclear = this.data.byclear
    const ctx = wx.createCanvasContext('canvasIn', this);
    // Scale the canvas. Note that the scales are the same, that is, the scaling ratio is the same. Guarantee consistency of aspect ratio
    if (e.detail.width > 375 * byclear) ctx.scale(375 * byclear / e.detail.width, 375 * byclear / e.detail.width);
    ctx.drawImage(res.tempFilePaths[0], 0, 0, e.detail.width, e.detail.height)
    ctx.draw()
    // Follow-up actions
  }
上面我们已经完全用画布绘制了画面,但还不够。接下来,我们将设置已完全显示的画布的宽度和高度。
 
  <canvas canvas-id="canvasIn" class="canvas" style="width:{{imgW}}rpx;height:{{imgH}}rpx;margin:0 auto;">
  </canvas>
微信的自适应单位是rpx。对于iPhone 6,375px = 750rpx => 1px = 2rpx; 对于其他型号,它是成比例的。byclear然后图片小于屏幕宽度,无需处理,检查wh后续代码
因此:
 
checkwh(e){
    // The preceding code...
      this.setData({
        imgW: e.detail.width > 375 ? 750 : e.detail.width * 2 / byclear,
        imgH: e.detail.width > 375 ? 750 * whsrc : e.detail.height * 2 / byclear
      })
  }
画布缩放比例方案
缩放方案优于缩放方案,因为它不需要计算画布的大小或缩放比例,而是直接将原始图像的宽度和高度设置为画布的宽度和高度。然后,缩放用于缩放画布并直接缩放代码量。这里,比例是Picture width / 750,Note that there is no need for scaling, and the CSS style automatically calculates the style ratio.
密钥wxml代码
 
   <canvas canvas-id="canvasIn" class="canvas" style="width:{{imgW}}rpx;height:{{imgH}}rpx;margin:0 auto;zoom:{{imgW > 750 ? 750 / imgW : 1}}"></canvas>
关键JS代码
 
  checkwh(e){
    var vhsrc = e.detail.height / e.detail.width
    let res = this.data.res
    let byclear = this.data.byclear
    const ctx = wx.createCanvasContext('canvasIn', this);
    ctx.drawImage(res.tempFilePaths[0], 0, 0, e.detail.width, e.detail.height)
    ctx.draw()
    this.setData({
      imgW: e.detail.width * 2 / byclear,
      imgH: e.detail.height * 2 / byclear
    })
  },
 
以上就是今天南京小程序开发安优网络带来的微信小程序小部件完整显示图片[画布。的drawImage],希望上面的原创文章能够给你在后期的小程序开发过程中带来帮助。

本文地址:http://www.njanyou.cn/web/2622.html
Tag:
专业服务:南京网站制作,南京网站制作公司,南京网站建设公司
联系电话:025-65016872
上一篇: 内容营销投资回报率:您获得的收入是什么?
下一篇: 为什么视觉层次结构对于良好的用户体验至关重要
最新案例
永银
永银
珠海跨境电商
珠海跨境电商
五颗星商城
五颗星商城
上海万客生鲜超市
上海万客生鲜超市
一九在线商城
一九在线商城
你可能感兴趣
小型企业平稳运营所需的 5 种软件类型
为什么每个人都在谈论 Advantage+ Creative
27 关于 Bing PPC 的统计数据
改善编程和 QA 之间协作的 4 种方法
您的网站给人留下第一印象:为什么好的网页设计对企业至关重要
网页设计和内容营销:最大限度地提高博客参与度的 6 个技巧
所有重要的 GA4 指标
ClickFunnels 与 Kajabi:详细比较
最后更新
打造直观体验:UX 和 UI 矩阵 了解 Advantage+ 定位 我们所知道的关于大规模谷歌算法泄漏的一切 如何撰写吸引受众注意力的营销电子邮件 如何使用数据抓取进行有效的竞争分析:分步指南 优化医疗保健提供商的 SEO 和在线形象:2024 年的最佳实践 Elementor:网站建设的首选(原因如下) 产品系列页面:提高电子商务转化率的设计策略
服务项目
南京网站制作 营销型网站 微信营销 IDC网站 精品案例