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

微信小程序canvas畫圖案列,實現生成頭像并保存,小程序新版canvas變化,小程序中canvas注意事項

這篇具有很好參考價值的文章主要介紹了微信小程序canvas畫圖案列,實現生成頭像并保存,小程序新版canvas變化,小程序中canvas注意事項。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

你一定見過很多制作頭像的小程序,無論是國慶的紅旗,圣誕的帽子,還是疫情的口罩,都可以用小程序生成應景的頭像,那么具體的代碼是怎么實現的呢?前些天幫別人做了一個生成姓氏頭像的功能,里面的實現原理基本一致,都是通過Canvas實現,以生成姓氏頭像為例,記錄一下小程序的Canvas如何使用. (小程序的文檔就是依托答辯??)

小程序Canvs

1.canvas的標簽

如果你想使用它的話,要先在wxml寫上canvas標簽,這里有坑,注意你的寫法,如果你上網copy的代碼,絕大部分是老版的canvas.

老版的canvas,部分api已經失效,新版的文檔寫了等于沒寫.


//舊版 寫法
<canvas canvas-id="myCanvas" />
//新版 寫法
<canvas id="myCanvas" type="2d" />
新版的必須聲明 type="2d"
//區(qū)別不是很大,如果你在網上找代碼 一定要使用對應版本的api

2.獲取canvas對象及上下文內容


//舊版獲取canvas上下文
const context = wx.createCanvasContext('myCanvas')
// 新版獲取canvas及上下文
wx.createSelectorQuery() //此方法等于獲取頁面所有節(jié)點
    .select('#myCanvas') //類似原生JS的選擇器,這里根據id
    .fields({ node: true, size: true })//獲取到的節(jié)點屬性配置,node是否返回實例,size是否返回尺寸大小尺寸
    .exec((res)=>{ //獲取之后的回調
        // Canvas 對象
        const canvas = res[0].node
        // 渲染上下文
        const ctx = canvas.getContext('2d')
    
    })

3.初始化canvas畫布


wx.createSelectorQuery() 
    .select('#myCanvas') 
    .fields({ node: true, size: true })
    .exec((res)=>{ 
        // Canvas 對象
        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//獲取屏幕比例,用來解決渲染畫布模糊的問題
        canvas.width = width * dpr
        canvas.height = height * dpr
        ctx.scale(dpr, dpr)
        
        // 用來解決畫布里面東西能夠自適應,不同屏幕不同尺寸 375不行的話用750
        const ratio = wx.getSystemInfoSync()?.windowWidth / 375; 
    })

4.開始繪制canvas內容?(開始接入業(yè)務,可按照自己需求進行)


wx.createSelectorQuery() 
    .select('#myCanvas') 
    .fields({ node: true, size: true })
    .exec((res)=>{ 
       //...
       //省略了步驟3的代碼,使用時,請自己補全!!!!慎記!!!
       //...
       //清除畫布內容
       //前兩個參數 可以理解為 要清除的起點 x y坐標
       //后兩位參數 是你要選擇的區(qū)域大小
       //以下為例 在畫布的 0 0 起點清空高寬與畫布本身相等的區(qū)域,等于全部清空
       ctx.clearRect(0, 0, width, height) 
       
       //因為我是生成姓氏頭像,所以畫布的底圖是提前有的
       //可以是獲取用戶 可以走接口 圖片地址用Https!!!!
       //創(chuàng)建圖片對象
       const bg = canvas.createImage()
       //底圖地址
       bg.src = 'https://gitee.com/ouchFF/blog_img/raw/master/img/bg.jpg' 
       bg.onload = () => { //圖片加載完畢
          //第一個參數是圖片對象 其他參數與清空畫布類似
          ctx.drawImage(bg, 0, 0, width, height) //繪制圖片
        }
    })

寫到這一步,不出意外已經可以看見我們繪制的底圖了.

微信小程序canvas畫圖案列,實現生成頭像并保存,小程序新版canvas變化,小程序中canvas注意事項

5.生成姓氏,并繪制到canvas畫布上


//這里寫生成姓氏的方法 通過點擊頁面按鈕觸發(fā)
//這里的姓氏 本質是一張圖片 因為生成的姓氏是帶字體的 
//設置自定義字體我搞了好久也沒成功,希望有人能給我解答
//正常是 用戶寫一個姓氏,調用接口,后端返回一個姓氏的png圖片地址
//我這里沒有接口,所以直接用我準備好的圖片
  selectText() { //點擊按鈕觸發(fā)
    //第三步的時候 我已經將 canva相關東西存入data里了 這里直接用
    const _this = this.data
    const bg = _this.canvas.createImage() //創(chuàng)建圖片對象
    //假裝這是后端返回的一個姓氏圖片地址
    bg.src = 'https://gitee.com/ouchFF/blog_img/raw/master/img/shuai.png'
    bg.onload = () => {
      _this.ctx.drawImage(bg, 150 * _this.ratio, 150 * _this.ratio, 40 * _this.ratio, 40 * _this.ratio) //繪制圖片
    }
    //這里每個值我都乘了一個ratio 這是因為api本身默認單位是px
    //在不同屏幕下 可能位置會偏移 為了實現像rpx那樣能自適應,需要乘以一個系數
    //這個系數 是在第三步中 計算的
  },

點擊按鈕后效果如下圖 會看見疊加了一張姓氏圖

微信小程序canvas畫圖案列,實現生成頭像并保存,小程序新版canvas變化,小程序中canvas注意事項

?

假設你并沒有字體要求,只是單純的想添加文字,那么也可以按以下寫法


//向畫布中添加 文字
  selectText2() {
    const { ctx, canvas, ratio,dpr } = this.data
    // 設置文字樣式 這代碼是我想設置自定義字體的 并沒有生效,可以忽略
    //除了字體樣式 其他設置是生效的
    ctx.font = `normal ${50*ratio}px 倉耳漁陽體`; //設置字體
    ctx.font = `normal ${50*ratio}px font`; //設置字體
    //添加文字 第一個參數是文字內容
    //其他參數是起始點x y (這里起始點可能有問題 可以自己看看文檔)
    ctx.fillText(this.data.text, 100*ratio, 100*ratio); //繪制文字
  },

6.將生成的canvas內容保存到我們自己的手機上


save() {
//同樣 新老版本有差異 我這是新版的保存
    wx.canvasToTempFilePath({
      canvas: this.data.canvas,
      success: (res) => {
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success(res) {
            wx.showToast({
              title: "保存成功,請在相冊中查看",
            });
          },
        });
      },
      fail(error) {
        return reject(error);
      },
    });
  },

至此,一個簡單的生成頭像功能就完成了.有需要此案例源碼的,可以私信我~~文章來源地址http://www.zghlxwxcb.cn/news/detail-491909.html

到了這里,關于微信小程序canvas畫圖案列,實現生成頭像并保存,小程序新版canvas變化,小程序中canvas注意事項的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

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

相關文章

  • 微信小程序canvas生成圖片并保存

    微信小程序canvas生成圖片并保存

    需求: 做一個類似下圖的功能。圖片內容是動態(tài)的,用canvas畫出來,生成臨時圖片,再保存。 實現: ?其他使用,查看微信開發(fā)文檔 ?

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

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

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

    2024年02月11日
    瀏覽(92)
  • 微信小程序使用canvas生成分享海報功能復盤

    微信小程序使用canvas生成分享海報功能復盤

    近期需要開發(fā)一個微信小程序生成海報分享的功能。在h5一般都會直接采用 html2canvas 或者 dom2image 之類的庫直接處理。但是由于小程序不具備傳統(tǒng)意義的dom元素,所以也沒有辦法采用此類工具。 所以就只能一筆一筆的用 canvas 畫出來了,下面對實現這個功能中遇到的問題做一

    2024年02月16日
    瀏覽(100)
  • 微信小程序-生成canvas圖片并保存到手機相冊

    wxml頁面 wxss頁面 js代碼

    2024年02月10日
    瀏覽(28)
  • 微信小程序使用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)
  • uni-app 微信小程序 圖文生成圖片 wxml-to-canvas

    uni-app 微信小程序 圖文生成圖片 wxml-to-canvas

    在做的小程序要增加一個將文字與圖片生成圖片不可修改的功能,第一次做,在網上找了不少資料。參考了wxml-to-canvas | 微信開放文檔? ,又看了一些相關事例,嘗試寫了一下。 ? 需要準備的文件及配置項: 1、先把代碼片段下載到本地 2、創(chuàng)建wxcomponents目錄,把代碼片段中的

    2024年02月09日
    瀏覽(25)
  • 微信小程序--canvas畫布實現圖片的編輯

    微信小程序--canvas畫布實現圖片的編輯

    上傳圖片,編輯圖片大小,添加文字,改變文字顏色等 微信小程序--canvas畫布實現圖片的編輯 軟件環(huán)境:微信開發(fā)者工具 官方下載地址:微信開發(fā)者工具下載地址與更新日志 | 微信開放文檔 1、基本需求。 實現上傳圖片 實現圖片編輯 實現添加文字 實現導出圖片 2、案例目錄

    2024年02月05日
    瀏覽(94)
  • 微信小程序canvas type=2d生成海報保存到相冊、文字換行溢出顯示...、文字刪除線、分享面板

    微信小程序canvas type=2d生成海報保存到相冊、文字換行溢出顯示...、文字刪除線、分享面板

    做個簡單的生成二維碼海報分享, 我做的時候也找簡單的方法看能不能實現頁面直接截圖那種生成圖片,原生小程序不支持, 不多介紹下面有全部代碼有注釋、參數自行替換運行看看,還有需要優(yōu)化的地方,有問題可以咨詢我,我寫的已經上線 如圖:

    2024年02月11日
    瀏覽(94)
  • 微信小程序使用 canvas 2d 實現簽字板組件

    微信小程序使用 canvas 2d 實現簽字板組件

    本文是在微信小程序中使用 canvas 2d 來實現簽字板功能; 效果圖: 代碼: 1、wxml 2、js 3、總結 canvas 的寬度和高度可以寫死,也可以根據當前可是區(qū)域動態(tài)計算;需要注意的是 res[0].node 的寬度和高度的計算是當前 canvas 元素上的寬度和高度乘設備的 pixelRatio ;

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

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

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

    2024年02月05日
    瀏覽(704)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包