<template>
<view>
<!--VIDEO标签父元素-->
<video id="myVideo" autoplay style="height:750rpx;width:750rpx;"
src="https://repo.bfw.wiki/bfwrepo/video/modushanghai.mp4"></video>
<image :src="shot" style="width: 100%;height: 200px;"></image>
<button @click="doshot">截图</button>
</view>
</template>
<script>
export default {
data() {
return {
shot: "",
}
},
methods: {
doshot() {
this.videoContext = uni.createVideoContext('myVideo'); //创建视频实例指向video
this.videoContext.pause();
this.$nextTick(() => {
this.getCapture()
})
},
getCapture() {
let pages = getCurrentPages();
let page = pages[pages.length - 1];
let currentWebview = page.$getAppWebview()
var bitmap = new plus.nativeObj.Bitmap('csreen');
// 将webview内容绘制到Bitmap对象中
currentWebview.draw(bitmap, () => {
console.log('截屏绘制图片成功');
// 将原生Bitmap转换成Base64字符串
this.shot = bitmap.toBase64Data()
this.videoContext = uni.createVideoContext('myVideo'); //创建视频实例指向video
this.videoContext.play();
//这里我将文件名用四位随机数拼接了,不然会出现当前图片替换上一张图片只能保存一张图片的问题
let rand = Math.floor(Math.random() * 10000)
let saveUrl = '_doc/' + rand + 'a.jpg'
bitmap.save(saveUrl, {}, function(i) {
console.log('保存图片成功:' + JSON.stringify(i));
uni.saveImageToPhotosAlbum({
filePath: i.target,
success: function() {
bitmap.clear(); //销毁Bitmap图片
uni.showToast({
title: '保存截图成功',
duration: 1500
});
},
complete() {
uni.hideLoading();
}
});
}, function(e) {
console.log('保存图片失败:' + JSON.stringify(e));
});
}, (e) => {
console.log('截屏绘制图片失败:', e);
}, {
check: true, // 设置为检测白屏
clip: {
top: uni.getSystemInfoSync().statusBarHeight + 45,
left: '0px',
height: '266px',
width: '100%'
} // 设置截屏区域
});
}
}
}
</script>
<style>
</style> 网友回复
Cloudflared 和WARP Connector有啥不同?
有没有让本地开源大模型越狱的方法或插件啥的?
如何使用Zero Trust的Tunnels技术将局域网电脑web服务可以公网访问呢?
编程领域ai大模型的排名是怎么样的?
如何修改别人发给我的微信笔记内容?
fbx、obj、glb三维格式模型如何在浏览器中通过three相互转换格式?
python如何实现基于http隧道加密的正向代理服务?
有没有有专门针对 UI 界面截图进行智能标记(Set-of-Mark, SoM) 的开源库和工具?
如何用python实现Set-of-Mark (SoM) 技术?
python如何截取windows指定应用的窗口截图,不用管窗口是不是在最前面?


