ホームページ  >  記事  >  WeChat アプレット  >  WeChat ミニ プログラムで画像を生成するコード

WeChat ミニ プログラムで画像を生成するコード

不言
不言オリジナル
2018-09-08 17:32:325221ブラウズ

この記事の内容は、WeChat アプレットで画像を生成するためのコードに関するものです。必要な方は参考にしていただければ幸いです。

キャンバスの追加

まず、ミニプログラムで描画操作を実行するには、5ba626b379994d53f7acf72a64f9b697コンポーネントを使用する必要があります。手順は大きく次の3つの部分に分かれています:大きな背景画像、動的画像。テキスト (「タイトル ユーザー名とその他の情報」)、および小さなプログラム コードの画像。次に、最初に次の 5ba626b379994d53f7acf72a64f9b697 を wxml コードに追加します:

<!--wxml代码-->
<view style=&#39;width:100%;height:100%;&#39; bindlongpress=&#39;saveInviteCard&#39;>
  <canvas canvas-id="shareCanvas" style="width:{{windowWidth}}px;height:{{windowHeight}}px" ></canvas>
</view>

サードパーティ関数の紹介

const util = require(&#39;../../utils/util.js&#39;)
//util.js
var Promise = require(&#39;../components/bluebird.min.js&#39;)

module.exports = {
  promisify: api => {
    return (options, ...params) => {
      return new Promise((resolve, reject) => {
        const extras = {
          success: resolve,
          fail: reject
        }
        api({ ...options, ...extras }, ...params)
      })
    }
  }
}

bluebird.min.js ソース ファイル コードは長すぎるので、自分でダウンロードできます。ここにはコピーして貼り付けません。

//获取手机宽高 
wx.getSystemInfo({
    success: function (res) {
      wc.put(&#39;phoneInfo&#39;, res)
    }
  });

var windowHeight = phoneInfo.windowHeight, windowWidth = phoneInfo.windowWidth
self.setData({
   windowHeight: windowHeight,
   windowWidth: windowWidth
 })

//在这段代码中,我们通过使用wx.getImageInfo这个API来下载一个网络图片到本地(并可获取该图片的尺寸等其他信息),然后调用ctx.drawImage方法将图片绘制到画布上,填满画布。

const wxGetImageInfo = util.promisify(wx.getImageInfo)
//绘制二维码
Promise.all([
      //背景图
      wxGetImageInfo({
        src: &#39;https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1536213812443&di=753a0a49acfd390fba9fd7884daafa5c&imgtype=0&src=http%3A%2F%2Fi5.hexunimg.cn%2F2016-08-10%2F185422031.jpg&#39;
      }),
      //二维码
      wxGetImageInfo({
        src: &#39;https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1898297765,3486952215&fm=26&gp=0.jpg&#39;
      })
    ]).then(res => {
      console.log(res)
      if (res[0].errMsg == "getImageInfo:ok" && res[1].errMsg == "getImageInfo:ok"){
        const ctx = wx.createCanvasContext(&#39;shareCanvas&#39;)

        // 底图
        ctx.drawImage(res[0].path, 0, 0, windowWidth, windowHeight)

        //写入文字
        ctx.setTextAlign(&#39;center&#39;)    // 文字居中
        ctx.setFillStyle(&#39;#f3a721&#39;)  // 文字颜色:黑色
        ctx.setFontSize(22)         // 文字字号:22px
        ctx.fillText("作者:墜夢—Eric", windowWidth / 2, windowHeight / 2)

        // 小程序码
        const qrImgSize = 150
        ctx.drawImage(res[1].path, (windowWidth - qrImgSize) / 2, windowHeight / 1.8, qrImgSize, qrImgSize)

        ctx.stroke()
        ctx.draw()
      }else{
        wx.showToast({
          title: &#39;邀请卡绘制失败!&#39;,
          image:&#39;../../asset/images/warning.png&#39;
        })
      }
 })

このようにして、私たちの共有画像がほぼ生成されます。

画像を長押ししてシステム アルバムに保存します

ユーザーのシステム アルバムに保存するには、この機能を実現するために、主に wx.canvasToTempFilePathwx.saveImageToPhotosAlbum に依存します。 これら 2 つの API。 wx.canvasToTempFilePathwx.saveImageToPhotosAlbum这两个API。

主要的流程就是先通过wx.canvasToTempFilePath5ba626b379994d53f7acf72a64f9b697上绘制的图像生成临时文件的形式,然后再通过wx.saveImageToPhotosAlbum

主なプロセスは、まず <canvas></canvas> に描画された画像から wx.canvasToTempFilePath を介して一時ファイルを生成し、次に wx.saveImageToPhotosAlbumシステムアルバムに保存する操作を実行します。 <p><pre class="brush:css;toolbar:false;"> //保存邀请卡 saveInviteCard:function(){ console.log(&amp;#39;保存图片&amp;#39;) const wxCanvasToTempFilePath = util.promisify(wx.canvasToTempFilePath) const wxSaveImageToPhotosAlbum = util.promisify(wx.saveImageToPhotosAlbum) wxCanvasToTempFilePath({ canvasId: &amp;#39;shareCanvas&amp;#39; }, this).then(res =&gt; { return wxSaveImageToPhotosAlbum({ filePath: res.tempFilePath }) }).then(res =&gt; { wx.showToast({ title: &amp;#39;已保存到相册&amp;#39; }) }) }</pre></p>関連おすすめ: <p><a href="http://www.php.cn/xiaochengxu-353365.html" target="_self"></a>WeChat ミニ プログラム QR コード キャンバスの描画例の詳細な説明<br></p> <p><a href="http://www.php.cn/xiaochengxu-389004.html" target="_self"></a> WeChat ミニ プログラムのキャンバスの基本の詳細な説明</p>🎜

以上がWeChat ミニ プログラムで画像を生成するコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。