123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <template>
- <view>
- <page-head :title="title"></page-head>
- <view class="uni-padding-wrap">
- <view v-if="imagePath !== ''" class="media-box image">
- <image class="image" mode="widthFix" :src="imagePath" />
- </view>
- <button type="primary" class="uni-button" @click="saveImage">拍摄图片并保存到本地</button>
- <view v-if="videoPath !== ''" class="media-box">
- <video
- id="myVideo"
- :src="videoPath"
- @error="videoErrorCallback"
- enable-danmu
- danmu-btn
- controls
- ></video>
- </view>
- <button type="primary" class="uni-button" @click="saveVideo">录制视频并保存到本地</button>
- </view>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- title: 'saveImage/saveVideo',
- imagePath: '',
- videoPath: ''
- };
- },
- onLoad() {},
- methods: {
- videoErrorCallback: function() {
- uni.showModal({
- content: '视频加载失败',
- showCancel: false
- });
- },
- saveImage() {
- uni.chooseImage({
- count: 1,
- sourceType: ['camera'],
- success: res => {
- this.imagePath = res.tempFilePaths[0];
- this.getTempFilePath(res.tempFilePaths[0], 'imageTempPath');
- },
- fail: (err) => {
- // #ifdef MP
- uni.getSetting({
- success: (res) => {
- let authStatus = res.authSetting['scope.camera'];
- if (!authStatus) {
- uni.showModal({
- title: '授权失败',
- content: 'Hello uni-app需要从您的相机获取图片,请在设置界面打开相关权限',
- success: (res) => {
- if (res.confirm) {
- uni.openSetting()
- }
- }
- })
- }
- }
- })
- // #endif
- }
- });
- },
- saveVideo() {
- let _this = this;
- uni.chooseVideo({
- count: 1,
- sourceType: ['camera'],
- success: res => {
- console.log(res.tempFilePath)
- this.videoPath = res.tempFilePath;
- this.getTempFilePath(res.tempFilePath, 'videoTempPath');
- },
- fail: (err) => {
- // #ifdef MP
- uni.getSetting({
- success: (res) => {
- let authStatus = res.authSetting['scope.camera'];
- if (!authStatus) {
- uni.showModal({
- title: '授权失败',
- content: 'Hello uni-app需要从您的相机获取视频,请在设置界面打开相关权限',
- success: (res) => {
- if (res.confirm) {
- uni.openSetting()
- }
- }
- })
- }
- }
- })
- // #endif
- }
- });
- },
- getTempFilePath(url, types) {
- // 如果已经下载本地路径,那么直接储存
- let obj = {
- filePath: url,
- success: () => {
- console.log('save success');
- uni.showModal({
- content: '保存成功',
- showCancel: false
- });
- uni.hideLoading();
- },
- fail: e => {
- uni.hideLoading();
- uni.showModal({
- content: '保存失败',
- showCancel: false
- });
- }
- };
- uni.showLoading({
- title: '保存中...'
- });
- if (types === 'videoTempPath') {
- uni.saveVideoToPhotosAlbum(obj);
- } else {
- uni.saveImageToPhotosAlbum(obj);
- }
- }
- }
- };
- </script>
- <style>
- .media-box {
- display: flex;
- justify-content: center;
- align-items: center;
- margin: 30rpx 0;
- width: 100%;
- }
- .image {
- height: 400rpx;
- overflow: hidden;
- }
- .image image {
- width: 100%;
- height: 100%;
- }
- video {
- width: 100%;
- }
- .uni-button {
- margin: 30rpx 0;
- }
- </style>
|