uniAPP 视频图片预览组件

这篇具有很好参考价值的文章主要介绍了uniAPP 视频图片预览组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果图

 uniAPP 视频图片预览组件,uni-app

思路:处理文件列表,根据文件类型归类


已兼容 H5  ios 设备,测试已通过 浙政钉,微信小程序
视频资源因为,没有预览图,用灰色图层加播放按钮代替
文章来源地址https://www.toymoban.com/news/detail-615163.html

<template>
	<!--视频图片预览组件 -->
	<view v-if="list.length">
		<view class="back-medio">
			
			<view v-if="imgList.length" class="img-box" v-for="(item,index) in imgList" :key="index">
				<img :src="item.filepath" class="step-img" @click="viweImage(item.filepath)" />
				<view class="img-num" v-if="index == '0'">
					{{ list.length }}张
				</view>
			</view>
			<view v-if="videoList.length" v-for="(item,id) in videoList" :key="id+'d'" class="img-box"
				@click="playvideo(item)">
				<view class="step-img vide-back">
					<img :src="playIcon" class="playIcon" />
				</view>
			</view>
			</view>
		</view>
		<!-- 视频预览 兼容H5-->
		<uni-popup ref="videoShow" :mask-click="false">
<view class="viewVideo">
				<!-- 兼容H5 -->
				<view class="close" @click="fullscreenchange"></view>
				<video id="myVideo" :src="cVideo" object-fit='contain' autoplay="false" :controls="true"
show-fullscreen-btn="false" play-btn-position="center" show-loading='true'
					@fullscreenchange="fullscreenchange"></video>
			</view>
		</uni-popup>
	</view>
</template>
<script>

	export default {
		props: {
			list: {
				type: [Array,Object],
				default:[],
                // 示例数据
				// {
				//     "createTime": "2023-07-04 02:34:15",
				//     "modifyTime": "2023-07-04 02:34:15",
				//     "id": 4086,
				//     "filepath": "https://wsgz.deqing.gov.cn/images/4/20230704103415Dingtalk_20230526111858.jpg",
				//     "filename": "20230704103415Dingtalk_2023052
                // }
},
		},
		created() {
			this.init('1')
		},
		watch: {
			list() {
				this.init('1')
				console.log("ls",this.list)
			}
		},
data() {
			return {
				videoList: [], //媒体文件列表
				imgList: [], //媒体文件列表
				cVideo: '', //当前播放视频
				// 图标
				playIcon: 替换成播放图标bese64代码,
}
		},
		methods: {
			// 关闭视频弹窗
			close() {
				this.$refs.videoShow.close()
			},
// 点击视频封面预览视频
			playvideo(item) {
				console.log("播放", item)
				this.cVideo = item.filepath
				this.$refs.videoShow.open('top')
				this.videoContext = uni.createVideoContext('myVideo', this);
				// this.videoContext.requestFullScreen({
				// 	direction: 0
				// });
				this.videoContext.play()
			},
			// 视频0 满屏点击关闭
			fullscreenchange() {
				this.cVideo = ''
				this.videoContext.pause()
				this.close()
			},
            // 预览图片单张
			viweImage(e) {
				console.log(" 预览图片单张", e)
				uni.previewImage({
					current: 0,
					urls: [e]
				});
			},
            // 预览图片单张
			viweImage(e) {
				console.log(" 预览图片单张", e)
				uni.previewImage({
					current: 0,
					urls: [e]
				});
			},
init(bu) {
				console.log("dfsfsfss", bu, this.list,this.list.constructor)
				let th = this
				let arr =th.list
				th.videoList = []
				th.imgList = []
				arr.length && arr.forEach((item) => {
					// if (item.imgPath) {
					let type = item.fileExtName
					if (type == "mp4" || type == "rmvb" || type == "avi" || type == "ts") {
						th.videoList.push(item)
					} else {
						th.imgList.push(item)
					}
})
				// console.log("处理:", this.videoList, this.imgList)
			}
		}
}
</script>

<style lang="scss">
	.dynamic-img {
		margin-top: 20rpx;
		display: flex;
		flex-wrap: wrap;
		height: 120rpx;
		overflow: hidden;
image {
			height: 120rpx;
			width: 120rpx;
			margin-right: 16rpx;
		}

		.video-box {
			height: 120rpx;
			width: 120rpx;
			margin-right: 16rpx;
			position: relative;

			.triangle {
display: inline-block;
				font-size: 0;
				overflow: hidden;
				z-index: 2;
				top: 50rpx;
				right: 50rpx;
			}

			.triangle:before {
				content: "";
				position: relative;
				display: inline-block;
				border: 25rpx solid transparent;
			}
.triangle-right {
				position: absolute;
				right: 35rpx;
				top: 36rpx;
				border-top-right-radius: 50%;
				border-bottom-right-radius: 50%;
			}

			.triangle-right:before {
				left: 2px;
				border-right-width: 0;
				border-left-width: 50rpx;
				border-left-color: rgb(181, 181, 181);
			}

			.black {
				z-index: 1;
				position: absolute;
				top: 0;
				left: 0;
				height: 120rpx;
				width: 120rpx;
				background: #000000;
				opacity: 0.4;
			}
.video {
				position: absolute;
				top: 0;
			}
		}
	}

	.viewVideo {
        width: 100vw;
		min-height: 100vh;
		display: -webkit-box;
		display: -webkit-flex;
		display: flex;
		align-items: flex-start;
		justify-content: center;
		background: #000000;
		flex-wrap: wrap;
.close {
			width: 80rpx;
			height: 80rpx;
			z-index: 99999;
			position: relative;
			margin: 0 auto;
			top: 60rpx;
		}

		.close:before,
.close:after {
			position: absolute;
			left: 40rpx;
			content: ' ';
			height: 80rpx;
			width: 8rpx;
			background-color: #EFEFF4;
		}

		.close:before {
			transform: rotate(45deg);
		}

		.close:after {
			transform: rotate(-45deg);
		}
	}
#myVideo {
		width: 100vw;
		height: 80vh;
		margin: 20px 0;
	}
	.back-medio {
		display: flex;
		flex-wrap: wrap;
		height: 48.4px;
		overflow: hidden;

		.vide-back {
			background: #3a3939c4;
		}
.img-box {
			position: relative;
			width: 62.23px;
			height: 48.4px;
			margin-right: 8px;
			margin-bottom: 8px;
			overflow: hidden;
			.step-img {
				width: 62.23px;
				height: 48.4px;
				border-radius: 4px;
			}
.playIcon {
				width: 30px;
				height: 30px;
				margin: 9px 16px;
			}

			.img-num {
				position: absolute;
				top: 0;
				right: 0;
				height: 32rpx;
				line-height: 32rpx;
                padding: 0 10rpx;
				font-size: 20rpx;
				z-index: 8;
				color: #ffffff;
				background: rgba(0, 20, 54, 0.6);
				border-radius: 0px 20rpx;
			}
		}
	}
.video-box {
		width: 62.23px;
		height: 48.4px;

		.video::-webkit-media-controls {

			display: none !important
		}

	}
</style>

到了这里,关于uniAPP 视频图片预览组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp中的uni-file-picker组件上传多张图片到服务器,可添加,预览,删除图片

    前言:在uniapp官方文档中的uni-file-picker组件可实现图片上传功能,官方文档:uniapp官网 中的案例不能完全满足需求,官网中默认的是上传到自带的服务空间 以下是代码: view代码: :auto-upload=\\\"false\\\"加上这个取消自动上传 methods方法 选择图片 上传图片 删除图片 上传事例: 参

    2024年02月11日
    浏览(34)
  • uni-app nvue页面中使用video视频播放组件

    我遇到的问题是,在nvue页面引用video组件,然后啥也没显示的,显示了无法控制播放,折腾了好久,在这里记录下来!希望可以帮助到需要的人 我的代码是这样的(src换成官方的举例)  问题1:视频页面一片空白,后来去查官方文档是这样说的 我以为按照官方提示勾选 ma

    2024年02月03日
    浏览(32)
  • 前端vue uni-app多图片上传组件,支持单个文件,多个文件上传 步骤条step使用

    快速实现多图片上传组件,支持单个文件,多个文件上传 步骤条step使用; 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法   使用方法 HTML代码部分   html JS代码 (引入组件 填充数据)   javascript

    2024年02月08日
    浏览(61)
  • uni-app移动端-H5-微信小程序下载保存图片,文档和视频到手机,带进度条

    可移步插件地址,可直接导入hbuilderx示例项目查看: uni-app移动端-H5-微信小程序下载保存图片,文档和视频到手机,带进度条 具体代码如下

    2024年02月13日
    浏览(27)
  • 解决uni-app uniCloud小程序预览没有数据

    例如:最近小程序的项目是用uni-app写的,项目用uniCloud作为后端,原本以为unicloud跟微信小程序云开发差不多,但是预览到手机的时候没有数据了…… unicloud作为后端,手机预览没有数据,通过查阅文献和网搜,进行了一系列的排查。 跟以往的微信云开发不同,unicloud作为后

    2024年02月09日
    浏览(35)
  • uni-app之微信小程序实现‘下载+保存至本地+预览’功能

    目录 一、H5如何实现下载功能 二、微信小程序实现下载资源功能方面与H5有很大的不同 三、 微信小程序实现文件(doc,pdf等格式,非图片)下载(下载-保存-预览)功能 四、图片预览、保存、转发、收藏:uni.previewImage() 五、 我当前遇到‘关于文件预览uni.openDocument()’API的问

    2024年02月15日
    浏览(44)
  • uni-app - 头像图片裁剪组件(支持多种裁剪,手势控制旋转或缩放、内外部控制图片移动、提供上传后端接口方案、头像图片美化)全端完美兼容 H5 App 小程序,最好用的图片上传后裁剪插件教程源代码

    网上的教程代码非常乱且都有 BUG 存在,非常难移植到自己的项目中,而且很难。 实现了 完美兼容 H5 App 小程序,选取手机本地相册或拍照,图片上传裁切内置多种方案,样式随便改, 本文代码干净整洁注释详细,您一键复制源码后参照示例几分钟就能完事, 如下图 真机测

    2024年02月17日
    浏览(53)
  • #Uniapp: uni.previewImage(OBJECT) 预览图片

    uni.previewImage(OBJECT) 预览图片。 api地址 媒体-图片 示例 OBJECT 参数说明 参数名 类型 必填 说明 平台差异说明 count Number 否 最多可以选择的图片张数,默认9 见下方说明 sizeType Array 否 original 原图,compressed 压缩图,默认二者都有 App、微信小程序、支付宝小程序、百度小程序 e

    2024年01月25日
    浏览(29)
  • uni-app 之 图片

    uni-app 之 图片 获取图片 v-bind 动态绑定 image.png

    2024年02月10日
    浏览(33)
  • 『UniApp』uni-app-打包成App

    大家好,我是 BNTang, 在上一节文章中,我给大家详细的介绍了如何将我开发好的项目打包为微信小程序并且发布到微信小程序商店 趁热打铁,在来一篇文章,给大家详细的介绍如何将项目打包成APP。 打包 App 也是一样的,首先需要配置关于 App 应用的基础信息,打开 manifest

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包