biaov
biaov
  • 发布:2019-10-28 10:18
  • 更新:2022-04-14 19:47
  • 阅读:16186

uni-app在APP端实现截屏分享功能

分类:uni-app

目标

点击分享按钮,截取APP屏,在分享到第三方,如微信,朋友圈。

截屏

方法一:html2canvas.js

  • 这种方法需要获取DOM节点,app端获取不到。如果可以获取DOM节点,可以尝试使用此方法。

方法二:5+api

let pages = getCurrentPages();  
let page = pages[pages.length - 1];  
let ws = page.$getAppWebview();  
let bitmap = new plus.nativeObj.Bitmap('drawScreen');  
// 将webview内容绘制到Bitmap对象中  
ws.draw(bitmap, () => {  
  // 保存图片到本地  
  bitmap.save("_doc/drawScreen.jpg", {  
    overwrite: true  
  }, res => {  
    console.log(res.target); // 图片地址  
    bitmap.clear(); // 清除Bitmap对象  
  }, error => {  
    console.log(JSON.stringify(error)); // 保存失败信息  
    bitmap.clear(); // 清除Bitmap对象  
  });  
  // bitmap.clear(); // 清除Bitmap对象  
}, error => {  
  console.log(JSON.stringify(error)); // 绘制失败  
}, {  
  check: true, // 设置为检测白屏  
});

注意

  • 血的教训:之前能用,后面突然发现返回的路径一直是file://null,原来是 bitmap.save和 bitmap.clear的时间差的问题,一定要把bitmap.clear放在成功回调函数或者失败函数里面。
  • 在获取本地对象时,如果使用plus.webview.currentWebview()获取本地对象,有可能截屏时出现黑屏现象。
let ws= plus.webview.currentWebview();
  • 在APP端使用app端获取方法
// 因为这里只做app端,所以没有加上条件编译,如果多端的话加上APP的条件编译  
let pages = getCurrentPages();  
let page = pages[pages.length - 1];  
let ws = page.$getAppWebview();

分享

3 关注 分享
陈晨1 9***@qq.com tcec

要回复文章请先登录注册

2***@qq.com

2***@qq.com

android端map黑了
2022-04-14 19:47
1***@qq.com

1***@qq.com

兄弟,能截屏只截部分吗?这是将所有屏幕可见范围都截屏了
2021-10-27 11:34
q***@163.com

q***@163.com

截图 如果有地图部分 会出现黑屏 在安卓机下
2021-09-20 19:58
2***@qq.com

2***@qq.com

当页面滚动后,当前页面的截图有点模糊,而且也不是截取首屏分享,感觉有点怪。
2021-04-19 19:33
1***@qq.com

1***@qq.com

res.target拿到图片通过uni.share(type:2)分享是个全部灰色
2021-03-31 14:12
cybccc

cybccc

"TypeError: page.$getAppWebview is not a function" 楼主看看呗?
2021-03-18 20:41
1***@qq.com

1***@qq.com

回复 7***@qq.com :
https://download.csdn.net/download/weixin_42085648/13704954
2020-12-22 13:50
1***@qq.com

1***@qq.com

方法2 怎么分享呢,我用uni.share分享这个res.target路径,却什么都没分享出去
2020-07-15 15:12
chenyb

chenyb

这个是需要在webview里才能使用吗?let bitmap = new plus.nativeObj.Bitmap('drawScreen'); 中的drawScreen是指什么呢?
2020-07-13 17:34
aiplat点com

aiplat点com

用uni-app框架,h5端使用image标签结合html2canvas生成canvas时image图片会模糊,改为img标签图片就变清晰了。
2020-06-12 08:57