ホットスポットをこすって、国旗をください@微信公式
2689 ワード
今日の午後、微信のモーメンツが爆発し、全員が国旗を要求した.国慶節を迎えて新しい顔を変える活動|テンセントニュースの合成サービスの微信の中で開きます.私たちも、その中の技術について、ぐずぐずして話しましょう.
どうやって実現するか推測するライセンス-ユーザーのアバター を取得ピクチャ にロードジェスチャー操作-移動スケール 合成画像 ダウンロード画像 どのように実現するかを証明します
もちろん、上は私が思っただけです.解析ノードを観察することでは確かに画像にロードされています.アドレスは である.であるがcanvas操作はない、DOMに基づいて をサポートする.合成依存 は、長押し画像に基づいてダウンロードされる.
自分で叶えて
私の公衆番号は個人番号なので、権限がありません.だから少し変えましょう.両親には申し訳ありませんが、昨日は書き終わらずに退勤しました.テストアドレス、やっと書き終わりました.次はキーについてお話ししますアップロード画像は .ジェスチャー操作
合成图片
通过
下载图片
通过
どうやって実現するか推測する
もちろん、上は私が思っただけです.解析ノードを観察することで
blob:
先頭scale、translate
等のtransfrom
でhtml2canvas
ライブラリ自分で叶えて
私の公衆番号は個人番号なので、権限がありません.だから少し変えましょう.両親には申し訳ありませんが、昨日は書き終わらずに退勤しました.テストアドレス、やっと書き終わりました.次はキーについてお話しします
FileAPI
を使用してファイルを取得し、URL.createObjectURL(file)
はfile
をurl
に変換する //
uploadInput.addEventListener('change', function(){
if(this.files.length){
var file = this.files[0];
avatarView.style.backgroundImage = 'url('+URL.createObjectURL(file)+')';
// avatarView.src=URL.createObjectURL(file)
}
})
e.touches
には、現在のトリガポイントがあります.transfrom
で合成しましたが、もちろん複数の値が座標系オフセットをもたらすので、多層で処理します.- 移动是比较
touchstart
记录点与touchmove
记录点的插值。比较好算 - 缩放是也是比较记录点,但是需要用勾股定理计算比例
通过
cavnas
的drawImage
来合成。我觉得偏移量应该要注意一下。通过
canvas.toDataURL('image/jpeg')
来生成base64url
然后放入img
。通过微信自带的长按下载来实现 总结
太忙了。好不容易写完。感觉实现上还是蛮简单的,做好就不容易了。
- 毛边问题
- 图片预加载策略
- 旋转的算法
- 自定义素材
更新时间 2019年9月26日11:34:54
https://www.lilnong.top/stati...
- 放大了一下倍图片解决毛边
-
增加了旋转功能
ctx.translate(widthHeight / 2, widthHeight / 2) ctx.transform.apply(ctx, getComputedStyle(avatarViewRotate).transform.match(/-?[\d.]+/g)) ctx.translate(-1 * widthHeight / 2, -1 * widthHeight / 2);
- 互換pc
- 変換優先度 を変更する.
- は技術実装のみを考慮し、大図(修復750*750) は生成されなかった.
更新日時2019年9月26日13:47:19https://www.lilnong.top/stati...
更新日時2019年10月9日09:08:37
微信公衆番号:フロントエンドlinong