ユニアプリはシェアを達成するための画像を生成しました

<テンプレート> 
<ビュー> 
    <ビュークラス= "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。
		} 
	} 
</スタイル>

  

おすすめ

転載: www.cnblogs.com/gqx-html/p/11314275.html