ホームページ > WeChat アプレット > ミニプログラム開発 > 寅年の春節に向けてアバターを生成する小さなプログラムを開発してみましょう。

寅年の春節に向けてアバターを生成する小さなプログラムを開発してみましょう。

青灯夜游
リリース: 2022-01-28 15:55:05
転載
3026 人が閲覧しました

この記事は、トレンドを追い、寅年春節用のアバターを作成するための小さなプログラムを作成するのに役立ちます。WeChat アバターを取得し、アバター フレームを選択して、さまざまな寅年春節アバターを合成してください。できれば幸いです。誰にとっても役に立つでしょう!

寅年の春節に向けてアバターを生成する小さなプログラムを開発してみましょう。

春節がもうすぐ始まります。今日、一部のネチズンがウェブ版の寅年のアバター作成ツールを共有しているのを見ました。とても良い気分です。ちょうど計画を立てていたところです。テーマを練習するための小さなプログラムを作成し、これで試してみてください。

まず、最終的なレンダリング:

寅年の春節に向けてアバターを生成する小さなプログラムを開発してみましょう。

実装プロセスについて話しましょう

最初のステップ: get現在の WeChat アバター画像、メイン コードは次のとおりです。デフォルトで取得されるアバター画像は高解像度ではないため、生成後にぼやけることを避けるために、最初に高解像度画像に変換する必要があることに注意してください。

 getUserProfile(e) {
    console.log(e)
    let that = this;
    wx.getUserProfile({
      desc: '仅用于生成头像使用',
      success: (res) => {
        var url = res.userInfo.avatarUrl;
        while (!isNaN(parseInt(url.substring(url.length - 1, url.length)))) {
          url = url.substring(0, url.length - 1)
        }
        url = url.substring(0, url.length - 1) + "/0";
        res.userInfo.avatarUrl = url;
        console.log(JSON.stringify(res.userInfo));
        that.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
        that.drawImg();
      }
    });
  },
ログイン後にコピー

第 2 ステップ: アバターを合成し、素材画像と第 1 ステップで取得したアバター画像からローカル ファイルを取得し、ミニ プログラムの cavas コンポーネントを使用して合成します。

drawImg() {
    let that = this;
    wx.showLoading({
      title: '生成头像中...',
    })
    let promise1 = new Promise(function (resolve, reject) {
      wx.getImageInfo({
        src: that.data.userInfo.avatarUrl,
        success: function (res) {
          resolve(res);
        }
      })
    });
    var mask_id = that.data.now_mask;
    let promise2 = new Promise(function (resolve, reject) {
      wx.getImageInfo({
        src: `../../assets/img/mask0${mask_id}.png`,
        success: function (res) {
          console.log(res)
          resolve(res);
        }
      })
    });
    Promise.all([
      promise1, promise2
    ]).then(res => {
      console.log(res)
      var windowWidth = wx.getSystemInfoSync().windowWidth
      var context = wx.createCanvasContext('myAvatar');
      var size = windowWidth /750 * 500
      // var size = 500
      context.drawImage(res[0].path, 0, 0, size, size);
      context.draw(true)
      context.save();
      context.drawImage('../../'+res[1].path, 0, 0, size, size);
      context.draw(true)
      context.save();

    })
    wx.hideLoading()
  },
ログイン後にコピー

ステップ 3: 合成した画像をローカル アルバムにダウンロードします。

canvasToTempFile(){
    if(!this.data.userInfo){
      wx.showModal({
        title: '温馨提示',
        content: '请先点击上方获取微信头像',
        showCancel: false,
      })
      return
    }
    var windowWidth = wx.getSystemInfoSync().windowWidth
    var size = 500
    // var dpr = 750 / windowWidth
    wx.canvasToTempFilePath({
      x: 0,
      y: 0,
      height: size,
      width: size,
      canvasId: 'myAvatar',
      success: (res) => {
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success: result => {
            wx.hideLoading();
            wx.showModal({
              content: '图片已保存到相册,请前往微信去设置哟!',
              showCancel: false,
              success: function(res) {
                if (res.confirm) {
                  console.log('用户点击确定');
                }
              }
            })
          }, fail(e) {
            wx.hideLoading();
            console.log("err:" + e);
          }
        })
      }
    });
  },
ログイン後にコピー

このようにして、main 機能が実現されます。

最後に、ミニ プログラム コードを入力します。どなたでもコードをスキャンして体験していただけます:

寅年の春節に向けてアバターを生成する小さなプログラムを開発してみましょう。

最後に、現在のプロジェクトが完成しました。オープンソース: https://github.com/hackun666/new-year-face

皆さん、楽しい春節と寅年の幸運を祈ります。

元のアドレス: https://juejin.cn/post/7057807283463389191

著者: hackun

[関連する学習の推奨事項: 小プログラム開発チュートリアル]

以上が寅年の春節に向けてアバターを生成する小さなプログラムを開発してみましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート