Vue LivePhoto(实况图片)渲染

前言

最近使用 iPhone 拍摄了一些实况照片,发现了一个很有意思的功能,LivePhoto,它可以将照片变成一个小视频,如果把这个特性应用到LifePalette-Web项目中,会不会很有趣呢?

探索 LivePhoto

网上对于 vue 实现LivePhoto的文章很少,搜索相关资料发现苹果官方提供了一个LivePhotojs库,LivePhotoKit,它可以帮助我们实现LivePhoto的渲染,于是我就尝试使用这个库来实现LivePhoto的渲染

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <script src="https://cdn.apple-livephotoskit.com/lpk/1/livephotoskit.js"></script>
  </head>
  <body>
    <div
      data-live-photo
      data-photo-src="https://nest-js.oss-accelerate.aliyuncs.com/nestTest/1/1711965193523.JPEG"
      data-video-src="https://nest-js.oss-accelerate.aliyuncs.com/nestTest/1/1711965199299.MOV"
      style="width: 320px; height: 320px"
    ></div>
  </body>
</html>

image.png

由官网 demo 发现实况图片其实是由两部分组成的,一部分是图片,一部分是视频,图片和视频是一一对应的,这里我们可以通过data-photo-srcdata-video-src来指定图片和视频的地址,这样就可以实现实况图片的渲染

在Vue中使用LivePhoto

官方提供了 livephotoskit.js 库,我们可以 npm 安装这个库

pnpm install livephotoskit

实现

<script setup>
import * as LivePhotosKit from 'livephotoskit'

const livePhotoRef = ref()
const fileInfo = {
    src: 'http://nest-js.oss-accelerate.aliyuncs.com/nestTest/1/1711965193523.JPEG',
    videoSrc: 'http://nest-js.oss-accelerate.aliyuncs.com/nestTest/1/1711965199299.MOV',
}
async function initLivePhoto() {
    await nextTick()
    const player = LivePhotosKit.Player(livePhotoRef.value)
    player.photoSrc = fileInfo.src
    player.videoSrc = fileInfo.videoSrc
}
onMounted(() => {
    initLivePhoto()
})
</script>

<template>
 <div ref="livePhotoRef" class="w-100 h-100" />
</template>

<style lang="less" scoped></style>

总结

通过这次探索,我们成功的实现了LivePhoto的渲染,这个功能可以让我们的项目更加有趣,如果你也对这个功能感兴趣,可以尝试一下

项目地址:LifePalette-Web
预览地址:LifePalette-Web

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值