国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序使用canvas繪制網絡圖片,使用canvas將圖片變成圓形

這篇具有很好參考價值的文章主要介紹了微信小程序使用canvas繪制網絡圖片,使用canvas將圖片變成圓形。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.HTML

<canvas   id="myCanvas" type="2d" canvas-id="myCanvas"  /> 

2.css隱藏 canvas ,前兩句是關鍵

#myCanvas {
  position:fixed;
  left:100%;
  /* visibility: hidden */
  /* visibility: hidden; */
   /* margin-top: 100rpx; */
margin: 68rpx auto;
width: 287px;
height: 450px;
/* line-height: 20px; */
background-color: rgba(255, 255, 255, 1);
text-align: center;
}

3.微信小程序使用canvas繪制網絡圖片

wx.createSelectorQuery()
            .select('#myCanvas') // 繪制的canvas的id
            .fields({
              node: true,
              size: true
            })
            .exec((res) => {
              const canvas = res[0].node
              // 渲染上下文
              const ctx = canvas.getContext('2d')
              // Canvas 畫布的實際繪制寬高
              const width = res[0].width
              const height = res[0].height
              // 初始化畫布大小
              const dpr = wx.getWindowInfo().pixelRatio

              //根據dpr調整
              // dpr  2 4
              //      3 6
              let   Ratio=dpr*2
              console.log("bug",dpr)
              canvas.width = width * dpr
              canvas.height = height * dpr
              //存儲畫布的實際大小
              this.setData({canvas:{...canvas}})
              ctx.scale(dpr, dpr)
              ctx.clearRect(0, 0, width, height)

              //背景圖
              const back_image = canvas.createImage()
              // 圖片加載完成回調
              back_image.onload = () => {
                // 將圖片繪制到 canvas 上
                ctx.drawImage(back_image, 0, 0, canvas.width, canvas.height)
                ctx.fillStyle = 'black'
                ctx.font = 'normal bold 12px PingFangSC-regular';
                ctx.fillText(this.data.nickName, 80, 30); // ctx.fillText('微信昵稱', 80, 30);
                ctx.font = 'normal 12px PingFangSC-regular';
                ctx.fillText('邀請你一起參加任務', 80, 52);
                // ctx.fillText('一起參與ta發(fā)布的任務吧~', 80, 70);

                //店鋪名稱
                ctx.font = 'normal bold 12px PingFangSC-regular';
                ctx.textAlign = "center";
                ctx.fillText(this.data.options.name, canvas.width/Ratio, 260); //canvas設置文字居中,寬度為畫布寬度的一半  
        

                //長按二維碼
                ctx.font = '10px PingFangSC-regular';
                ctx.fillStyle = '#999999';
                ctx.fillText('長按識別查看任務', canvas.width/Ratio, 440);
              }
              back_image.src = '/public/img/back.jpg'; //背景圖
              
              //用戶圖片
              const image = canvas.createImage()
              image.onload = () => {
                ctx.drawImage(image, 30, 18, 40, 40)
              }
              // image.src = '/public/img/wechar_1.png'
              console.log("展示",this.data.headimgUrl)  
              image.src=this.data.headimgUrl //app?.globalData?.wxUser.headimgUrl

              //商家圖片
              const shopImage = canvas.createImage()
              shopImage.onload = () => {
                ctx.drawImage(shopImage, canvas.width/Ratio-230/2, 88,230,140)
              }
              shopImage.src =this.data.options.brandHeaderPic  //'/public/img/wechar_1.png'

              //二維碼圖片
               coderImage.src = this.data.options.shareQrcode  //'/public/img/cord.jpg';
              const coderImage = canvas.createImage()
              coderImage.onload = () => {
                ctx.drawImage(coderImage, canvas.width/Ratio-120/2 , 300, 120, 120)
              }
             

    
   // 繪制完成后存儲路徑
   
    setTimeout( ()=> {
      wx.canvasToTempFilePath({
        x: 0,
        y: 0,
        width:  this.data.canvas.width,
        height: this.data.canvas.height,
        //  destWidth: this.data.canvas.width * 2,//生成圖片的大小設置成canvas大小的二倍解決模糊
        //  destHeight: this.data.canvas.height* 2,
        //canvasId: 'myCanvas',
        canvas,
        success: (res)=> {
          var tempFilePath = res.tempFilePath;
          console.log("數據是",res)
         this.setData({
            imagePath: tempFilePath
          });
          // console.log("app變量",app)
          // wx.hideToast();
          console.log('canvas圖片地址:' + this.data.imagePath);
        }
      });
    }, 600);

            })
  

以上的寫法 會造成某些圖標無法繪制上去,解決方法是在網絡圖片中不斷嵌套,先繪制大圖片,再繪制小圖片的順序

 //二維碼圖片
               coderImage.src = this.data.options.shareQrcode // 網絡url地址
              const coderImage = canvas.createImage()
              coderImage.onload = () => {
                ctx.drawImage(coderImage, canvas.width/Ratio-120/2 , 300, 120, 120)
                
                // 嵌套下一次繪圖
               shopImage.src =this.data.options.brandHeaderPic  
               const shopImage = canvas.createImage()
                 shopImage.onload = () => {
                ctx.drawImage(shopImage, canvas.width/Ratio-230/2, 88,230,140)
                  }
              

              }

網上說使用先下載到本地,再使用img.src加載,我嘗試過還是不行

4.使用canvas將圖片變成圓形

長用在海報,需要將用戶的頭像畫到canvas圖片上,如:微信小程序canvas繪制網絡圖片,微信小程序,微信小程序,javascript,前端


 wx.createSelectorQuery()
      .select('#myCanvas') // 在 WXML 中填入的 id
      .fields({
        node: true,
        size: true
      })
      .exec((res) => {
        const canvas = res[0].node
        // 渲染上下文
        const ctx = canvas.getContext('2d')
        //用戶圖片
              const image = canvas.createImage()
              image.src = this.data.headimgUrl //app?.globalData?.wxUser.headimgUrl
              image.onload = () => {
                ctx.arc(50, 38, 20, 0, 2 * Math.PI) // 將圖片繪制到圓上
                ctx.fill(); //填充背景
                ctx.clip() 
                ctx.drawImage(image, 30, 18, 40, 40)
              }})

其原理就是在圖片上面放一個圓文章來源地址http://www.zghlxwxcb.cn/news/detail-549798.html

到了這里,關于微信小程序使用canvas繪制網絡圖片,使用canvas將圖片變成圓形的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 微信小程序使用canvas繪制海報并保存本地相冊

    微信小程序使用canvas繪制海報并保存本地相冊

    在做微信小程序的時候,很多都會用到生成海報分享功能,剛好最近項目有這個需求,今天就發(fā)出來記錄下 首先是使用canvas繪制一張海報,微信小程序的canvas有老版本和新版本我是用的是新版本 代碼如下 js部分 我的做法是給canvas隱藏了不看到 ,等canvas繪制完畢后導出的url直接賦給

    2023年04月08日
    瀏覽(32)
  • 微信小程序中使用畫布canvas實現動態(tài)心電圖繪制

    微信小程序中使用畫布canvas實現動態(tài)心電圖繪制

    大家好,我是雄雄。 近期,接了個項目,三端(小程序、PC、公眾號)同步開發(fā),PC端沒的問題,以前一直做的就是PC端,但是小程序和公眾號之前沒有做過,只能通過這個項目,邊做邊學了。 人家都說小程序用原生的特別難,大部分都用 uniapp 開發(fā),說是這個方便快捷,還能

    2024年02月09日
    瀏覽(72)
  • 在H5、微信小程序中使用canvas繪制二維碼、分享海報

    提示:繪制二維碼的插件有很多,有些僅支持H5,有些只適用微信小程序,故讀者在使用二維碼插件前需要先查看插件官方文檔,查看其支持的環(huán)境 H5中安裝qrious插件 引入qrious canvas模板 初始化canvas 二維碼繪制并渲染 微信小程序中安裝weapp-qrcode插件 引入weapp-qrcode canvas模板

    2024年02月14日
    瀏覽(87)
  • 微信小程序:使用canvas 生成圖片 并分享

    微信小程序:使用canvas 生成圖片 并分享

    廢話不多說直接上代碼?。。?! 最終效果圖 ?

    2024年02月11日
    瀏覽(92)
  • 使用taro+canvas實現微信小程序的圖片分享功能

    使用taro+canvas實現微信小程序的圖片分享功能

    二輪充電業(yè)務中,用戶充電完成后在訂單詳情頁展示訂單相關信息,用戶點擊分享按鈕喚起微信小程序分享菜單,將生成的圖片海報分享給微信好友或者下載到本地,好友可通過掃描海報中的二維碼加群領取優(yōu)惠。 使用場景及功能:微信小程序 生成海報圖片 分享好友 下載圖

    2024年02月05日
    瀏覽(704)
  • uni-app+vue2 微信小程序 使用canvas繪制折線圖/波形圖

    uni-app+vue2 微信小程序 使用canvas繪制折線圖/波形圖

    ? 接口返回一個數組,每一項均是一個數字,代表著y坐標,x坐標需自己處理。 我的數據是1024個浮點數,在-10到10之間 波形圖需要xy軸縮放功能,用c3的 transform: scale()是不行的,至少會失真。 然后背景的格子,我這里是每個格子要求100個點,初始縮放下是11個格子,10條線(

    2024年04月26日
    瀏覽(26)
  • uniapp中使用canvas,在微信小程序中實現圖片縮放移動涂鴉文字

    uniapp中使用canvas,在微信小程序中實現圖片縮放移動涂鴉文字

    最近需要一個功能,在微信中編輯圖片,實現對圖片的涂鴉、加文字、縮放、移動,以下基本能實現該功能。 uniapp中使用畫布,實現圖片的編輯-批量批改圖片 1.初始化畫布圖片,圖片是網絡圖片,非本地圖片,所以需要先獲取圖片信息,直接使用uni.getImageInfo(如果是本地圖

    2024年04月14日
    瀏覽(123)
  • 微信小程序使用canvas畫布生成二維碼海報分享圖片(完整示例代碼)

    微信小程序使用canvas畫布生成二維碼海報分享圖片(完整示例代碼)

    canvas.js //獲取應用實例 const app = getApp() Page({ /** 頁面的初始數據 */ data: { // canvas _width: 0, //手機屏寬 _heigth: 0,//手機屏高 swiperHeight: 300,//主圖圖片高度 canvasType: false,//canvas是否顯示 loadImagePath: ‘’,//下載的圖片 imageUrl: ‘https://cos.myfaka.com/car/service/1.jpg’, //主圖網絡路徑 codeU

    2024年04月12日
    瀏覽(103)
  • 使用wxml2canvas將微信小程序頁面轉為圖片

    使用wxml2canvas將微信小程序頁面轉為圖片

    最近有個微信小程序項目,需要將頁面轉為圖片。微信小程序提供的Api是 wx.canvasToTempFilePath ,這個方法是將畫布指定區(qū)域的內容導出生成指定大小的圖片,但是我們是將頁面導出圖片,所以可以使用wxml2canvas解決 1、安裝wxml2canvas npm init 是npm初始化,這個時候根據編譯器終端

    2023年04月16日
    瀏覽(93)
  • 微信小程序海報插件Painter 2.0(canvas畫圖)使用并保存圖片到相冊案例

    Painter通過 json 數據形式,來進行動態(tài)渲染并繪制出圖片。 Painter 的優(yōu)勢 功能全,支持文本、圖片、矩形、qrcode 類型的 view 繪制 布局全,支持多種布局方式,如 align(對齊方式)、rotate(旋轉) 支持圓角,其中圖片,矩形,和整個畫布支持 borderRadius 來設置圓角 支持邊框,

    2024年01月20日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包