LivePhoto(实况图片)渲染

前言

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

探索 LivePhoto

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

html 复制代码
<!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="http://nest-js.oss-accelerate.aliyuncs.com/nestTest/1/1711965193523.JPEG"

      data-video-src="http://nest-js.oss-accelerate.aliyuncs.com/nestTest/1/1711965199299.MOV"

      style="width: 320px; height: 320px"

    ></div>

  </body>

</html>

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

在Vue中使用LivePhoto

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

bash 复制代码
pnpm install livephotoskit

实现

vue 复制代码
<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

相关推荐
徐小夕1 小时前
我用 AI 撸了个开源"万能预览器":浏览器直接打开 Office、CAD 和 3D 模型
前端·vue.js·github
前端Hardy6 小时前
字节/腾讯内部流出!Claude Code 2026王炸玩法!效率暴涨10倍
前端·javascript·vue.js
逆光如雪9 小时前
移动端卡片边框怎么做高级?我用 CSS 实现了设计师的刁钻要求
前端·css·vue.js
莹宝思密达10 小时前
地图显示西安经济开发区边界线-2023.12
前端·vue.js·数据可视化
leafyyuki11 小时前
告别 Vuex 的繁琐!Pinia 如何以更优雅的方式重塑 Vue 状态管理
前端·javascript·vue.js
Hooray11 小时前
AI 时代的管理后台框架,应该是什么样子?
前端·vue.js·ai编程
代码煮茶12 小时前
Vue3 虚拟列表实战 | 解决长列表性能问题(十万条数据流畅渲染,附原理)
前端·javascript·vue.js
计算机学姐13 小时前
基于SpringBoot的宠物店管理系统
java·vue.js·spring boot·后端·spring·java-ee·intellij-idea
布局呆星14 小时前
Vue3 —— 监听器 (watch/watchEffect) 与 Props 组件通信
vue.js·笔记·学习
橘子编程14 小时前
UniApp跨端开发终极指南
开发语言·vue.js·uni-app