<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>
网友回复
腾讯混元模型广场里都是混元模型的垂直小模型,如何api调用?
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?