<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>
网友回复
CefSharp与Electron开发桌面应用哪个更好?
在哪可以免费白嫖claude 4.5?
如何编写一个chrome插件实现多线程高速下载大文件?
cdn版本的vue在网页中出现typeerror错误无法找到错误代码位置怎么办?
pywebview能否使用webrtc远程控制共享桌面和摄像头?
pywebview6.0如何让窗体接受拖拽文件获取真实的文件路径?
如何在linux系统中同时能安装运行apk的安卓应用?
python有没有离线验证码识别ocr库?
各家的ai图生视频及文生视频的api价格谁最便宜?
openai、gemini、qwen3-vl、Doubao-Seed-1.6在ui截图视觉定位这款哪家更强更准?