<テンプレート> <ビュー> <ビュークラス= "personal_li" @クリック= "shareClick"> <画像SRC = "../../静的/ address.png" モード= "widthFix" クラス= "iconImage"> </イメージ> <テキストクラス= "font14">分享生成图片</テキスト> <画像SRC = "../../静的/ jt.png" モード= "widthFix" クラス= "jtIcon"> </イメージ> < /ビュー> <ビュークラス= "canvasContent" V-IF = "canvasShow"> <キャンバスキャンバス-ID = "shareCanvas"クラス= "canvasName"> </キャンバス> <ビュークラス=」canvasText ">アルバムに保存した画像、あなたが友人と共有することができます。</表示> <画像SRC =" ../../静的/ error.png "クラス=" errorImage偽canvasShow =「 "をクリックして= @"> </イメージ> </ビュー> </表示> </テンプレート> <スクリプト> エクスポートデフォルト{ データ(){ リターン{ canvasShow:falseに } }、 メソッド:{ //これは、包装の良い方法です promisifyは:API => { リターン(オプション、paramsが...)=> { 新しい新戻りますプロミス((解決、拒否)=> { CONST = {エクストラ 成功:、解決 失敗:拒否 } API({...オプション、エクストラ...}、...のparams) }) } }、 shareClick(){ this.promisify wxGetImageInfo =一定(uni.getImageInfo) Promise.allは([ //ランダムな絵は、現在唯一の後半を交換すること自由に、いくつかの写真を探して wxGetImageInfo({ SRC: 'http://pics.ksudi.com/pic/2019/soms/companycard/jd2.png' //背景画像 })、 wxGetImageInfo({ SRC:「http://pics.ksudi.com/pic/ 2019 /のSOM / companycard / st2.png ' // 次元コード画像は、このような二次元コードの画像パラメータを運ぶために必要として、パラメータが小さい後端の生産に応じて、スキャンされる必要があるページへのパス+インターフェースコードの後端部に渡すことができますプログラム次元コード経路、ここでのパスにOK }) ])。次に、(RES => { にconsole.log(3454) CONST wx.createCanvasContext CTX =( 'shareCanvas') はconsole.log(CTX) //ベース・マップ ctx.drawImage(RES [0] .path、0、0、600、700) //著者名 ctx.setTextAlign( '中央')//このテキストが中心である ctx.setFillStyle( '#000000')//テキストの色:黒 ctx.setFontSize(22)//テキストサイズ:22px ctx.fillText( '著者:張傑'、2分の300、100) //小程序码 //保存 のconst qrImgSize = 150 ctx.drawImage(RES [1] .path、(340 - qrImgSize)/ 2、230、qrImgSize、qrImgSize) ctx.stroke() //绘图生成临时图片 はconsole.log( 'のRES'は、RES) ctx.draw(偽、()=> { this.tempFileImage() }) this.canvasShow =真 }) }、 tempFileImage(){ こと=このましょう uni.canvasToTempFilePath({ canvasId: 'shareCanvas'、 成功:(RES)=> { uni.hideLoading() that.savePic(res.tempFilePath) }、 失敗:関数(){ // TODO } }) }、 savePic(filePathに){ にconsole.log( 'filePathに'ファイルパス) uni.showLoading({ タイトル: '正在保存' })。 uni.saveImageToPhotosAlbum({ filePathに:filePathに、 成功:関数(){ uni.showToast({ タイトル: '图片保存成功〜' }); }、 失敗します。function(e)の{ // TODO }、 完全な:関数() { uni.hideLoading() } })。 } } } </ SCRIPT> <スタイルのlang = "SCSS"スコープ> .canvasContent { 位置:固定されました。 下:0; 左:0; 右:0; トップ:0; 背景:RGBA(0,0,0,0.5)。 表示:フレックス。 ALIGN-アイテム:センター; フレックス方向:カラム; パディングトップ:50upx。 .canvasName { 幅:80%。 高さ:CALC(100VH - 300upx)。 } .canvasText { マージン:30upx 0 20upx。 色:#FFFFFF; } .errorImage { 幅:80upx。 高さ:80upx。 } } </スタイル>