当前位置: 首页 > news >正文

vue3展示pag格式动态图

提示:如果是webpack环境的,参考:Pag格式在vue3中的简单使用方法_pag文件-CSDN博客

下面展示的是在vite环境下配置pag

1、安装libpag

npm i libpag --save

2、安装rollup-plugin-copy

npm i rollup-plugin-copy --save

3、封装pag组件

下面是一个完整的pag组件,我命名为pagImg

<template><div><canvas ref="pagRef" class="pag-size"></canvas></div>
</template><script setup lang="ts">
import { nextTick, onMounted, ref, watch } from 'vue'
import { PAGInit } from 'libpag';
const props = defineProps({url: {type: String,default: '',}
})
const pagRef = ref() //元素 必须使用ref获取元素,别用id选择器
const urlValue = ref(props.url) //https://www.mustake.net/loading.pagconst initPag = async () => {// console.log("has-pag-->", urlValue.value);if (!pagRef.value) return//判断画布是否存在// 实例化 PAGconst PAG = await PAGInit();// 获取 PAG 素材数据const buffer = await fetch(`${urlValue.value}`).then((response) => response.arrayBuffer());// 加载 PAG 素材为 PAGFile 对象const pagFile = await PAG.PAGFile.load(buffer);// 实例化 PAGView 对象const pagView = await PAG.PAGView.init(pagFile, pagRef.value);if (pagView) {pagView.setRepeatCount(0) // 0表示无限循环,大于0表示循环次数await pagView.play();// 播放 PAGView}
}watch(() => props.url, (val) => {urlValue.value = val
})
onMounted(() => {nextTick(() => {initPag()})
})
</script><style>
.pag-size {/* 根据实际pag动图设置画布尺寸 */width: 60px;height: 60px;position: absolute;left: 50%;bottom: -10px;transform: translateX(-50%);z-index: 3;
}
</style>

4,在vite.config.js中进行配置,目的是把加载pag文件所需的libpag.wasm复制到项目的dist包中

官网的配置链接源码:pag-web/vue/vue3/vite.config.js at main · libpag/pag-web · GitHub

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import copy from 'rollup-plugin-copy'
// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),copy({targets: [{ src: './node_modules/libpag/lib/libpag.wasm', dest: process.env.NODE_ENV === 'production' ? 'dist/' : 'public/' },],hook: process.env.NODE_ENV === 'production' ? 'writeBundle' : "buildStart",}),],base: './',
});

5.使用pag,下面进提供参考

<template><div v-if="urlValue"><pagImg v-if="fileType === 'pag'" :url="generateImgURL(urlValue)" /></div>
</template>
<script lang='ts' setup>
import pagImg from './pagImg.vue'
import { onMounted, ref, watch } from 'vue'
import { generateImgURL } from '@/utils'; // 我项目封装的路径地址,根据自己需求,获取到完整的pag文件路径
const props = defineProps({url: {type: String,default: '',}
})
const urlValue = ref(props.url) //https://www.mustake.net/loading.pag
const fileType = ref('') // pag svga
const getExt = (fileUrl: string) => {// 判断是否是pag文件if (!fileUrl) { return "" };// 获取文件后缀名return fileUrl.split('.').pop()?.toLowerCase() || '';
}watch(() => props.url, (val) => {// console.log('pag-->', val);urlValue.value = valfileType.value = getExt(val)
})
onMounted(() => {// console.log('监pag-onMounted->', generateImgURL(urlValue.value));fileType.value = getExt(urlValue.value)
})
</script>
<style scoped lang='scss'></style>

相关文章:

vue3展示pag格式动态图

提示&#xff1a;如果是webpack环境的&#xff0c;参考&#xff1a;Pag格式在vue3中的简单使用方法_pag文件-CSDN博客 下面展示的是在vite环境下配置pag 1、安装libpag npm i libpag --save 2、安装rollup-plugin-copy npm i rollup-plugin-copy --save 3、封装pag组件 下…...

代码随想录算法训练营第三十九天|Day39 动态规划

198.打家劫舍 视频讲解&#xff1a;https://www.bilibili.com/video/BV1Te411N7SX https://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html 思路 #define max(a, b) ((a) > (b) ? (a) : (b)) int rob(int* nums, int numsSize) {if(numsSize 0){ret…...

qt QMovie详解

1、概述 QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式&#xff0c;包括 GIF 和一些常见的视频格式&#xff08;尽管对视频格式的支持依赖于底层平台&#xff09;。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件&#xff…...

数据集整理

系列博客目录 文章目录 系列博客目录1.Visual Genome数据集2.COCO数据集3.Flickr30k数据集10.集合多个数据集的网站 1.Visual Genome数据集 官网链接&#xff1a;https://homes.cs.washington.edu/~ranjay/visualgenome/index.html Visual Genome数据集梳理 Visual Genome数据…...

认证授权基础概念详解

目录 认证 (Authentication) 和授权 (Authorization)的区别是什么&#xff1f; RBAC 模型了解吗&#xff1f; 什么是 Cookie ? Cookie 的作用是什么? 如何在项目中使用 Cookie 呢&#xff1f; 如何在 Spring Boot 中创建和读取 Cookie 创建 Cookie Cookie 到期日期 安全…...

美国地址生成器站点

推荐一&#xff1a;fakexy 官网地址&#xff1a;https://www.fakexy.com 推荐二&#xff1a;好维持官网地址&#xff1a; https://www.dizhishengcheng.com 官网除了支持生成美国地址信息外&#xff0c;还支持生成英国、加拿大、日朩、澳大利亚、德国、法国、意大利、西班牙、巴…...

微信4.0大版本升级跨平台支持界面全面改版

微信4.0公测版现已正式发布&#xff0c;作为微信的大版本升级&#xff0c;新版微信基于全新架构开发&#xff0c;跨平台支持Windows和MAC系统&#xff0c;界面也全面改版&#xff0c;聊天宝也第一时间适配微信4.0&#xff0c;为广大客户提供快捷回复支持 前言 微信4.0公测版现…...

不想贴秋膘?正确打开秋冬运动姿势

这个秋天想要轻装上阵&#xff0c;想健康入秋更要美美入冬怎么破&#xff1f;这期把正确打开秋冬姿势一次性告诉你哦~ 天气变凉&#xff0c;脂肪可要燃起来~想要无痛入秋&#xff0c;最重要的动起来&#xff01;每天都抽出一点时间去运动一下&#xff0c;不光让身体燃起来&…...

【AIGC半月报】AIGC大模型启元:2024.11(上)

【AIGC半月报】AIGC大模型启元&#xff1a;2024.11&#xff08;上&#xff09; (1) Hunyuan-Large&#xff08;腾讯开源大模型&#xff09;(2) FLUX1.1 pro&#xff08;文生图&#xff09;(3) CogVideoX v1.5&#xff08;智谱AI升级文生视频大模型&#xff09; (1) Hunyuan-Lar…...

纯前端生成PDF(jsPDF)并下载保存或上传到OSS

前言 在工作中遇到了一个需求&#xff0c;就是把前端页面生成PDF并保存在本地&#xff0c;因为前端网站可能会展示各种表格&#xff0c;图表信息内容并带有比较鲜艳的色彩样式&#xff0c;如果让后端生产的PDF的话样式可能和前端页面展示的有所差异&#xff0c;所以这个任务就落…...

海外媒体发稿:旅游业媒体推广12个方面的注意事项-华媒舍

1.社交媒体推广过多 社交媒体是旅游业媒体推广的重要途径之一&#xff0c;过分依赖社交媒体将会成为一个常见误区。尽管社交媒体能够帮助旅行目的地提升知名度和曝光度&#xff0c;但如果过度投入精力与资源&#xff0c;可能忽视别的合理推广方式。 2.忽略SEO优化 搜索引擎提…...

分割回文串(DFS)

给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff1a;[["a","a","b"],["aa","b&qu…...

Qt第三课 ----------容器类控件

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

打印菱形(C语言)

程序&#xff1a; #include <stdio.h> int main() { int i,j; for(i1;i<5;i){ for(j0;j<6-i;j){ printf(" ");} for(j0;j<i*2-1;j){ printf("*");} printf("\n");} …...

Oracle 19c 中启用 scott 用户

Oracle 19c 中启用 scott 用户 文章目录 Oracle 19c 中启用 scott 用户正常操作如果ORA-01918: 用户 SCOTT 不存在?/sqlplus/admin/scott.sql 没有 scott.sql 怎么处理 正常操作 连接到 Oracle 数据库&#xff1a; 使用 sqlplus 工具或者其他 SQL 客户端工具&#xff08;如 S…...

git commit 校验

commitlint官方链接 1. npm install --save-dev commitlint/config-conventional commitlint/cli 2. 配置commitlint.config.cjs(项目根目录中&#xff09; module.exports {extends: [commitlint/config-conventional],rules: {type-enum: [2,always,[Feat, Fix, Doc, Style,…...

【AtCoder】Beginner Contest 377-B.Avoid Rook Attack

Problem Statement 题目链接 There is a grid of 64 64 64 squares with 8 8 8 rows and 8 8 8 columns. Let ( i , j ) (i,j) (i,j) denote the square at the i i i-th row from the top ( 1 ≤ i ≤ 8 ) (1\leq i\leq8) (1≤i≤8) and j j j-th column from the lef…...

江协科技STM32学习- P38 软件SPI读写W25Q64

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

【Triton 教程】低内存 Dropout

Triton 是一种用于并行编程的语言和编译器。它旨在提供一个基于 Python 的编程环境&#xff0c;以高效编写自定义 DNN 计算内核&#xff0c;并能够在现代 GPU 硬件上以最大吞吐量运行。 更多 Triton 中文文档可访问 →https://triton.hyper.ai/ 在本教程中&#xff0c;您将编…...

npx创建项目时,error fetch failed.TypeError: fetch failed

npx创建项目时&#xff0c;报以下错误&#xff1a; error fetch failed. TypeError: fetch failedat node:internal/deps/undici/undici:12345:11at process.processTicksAndRejections (node:internal/process/task_queues:95:5)at async getTemplateVersion (C:\Users\ymt30…...

从屏幕取词到智能翻译:CuteTranslation如何重塑Linux用户的跨语言工作流

从屏幕取词到智能翻译&#xff1a;CuteTranslation如何重塑Linux用户的跨语言工作流 【免费下载链接】CuteTranslation Linux屏幕取词翻译软件 项目地址: https://gitcode.com/gh_mirrors/cu/CuteTranslation 在Linux生态系统中&#xff0c;多语言处理一直是个技术痛点—…...

无王无帝定乾坤,来自田间第一人 大道同行赴新程

无王无帝定乾坤&#xff0c;来自田间第一人。 ——题记一、旧世终章&#xff1a;王权尽头的暮色朝代崛起方式落幕原因秦铁血征伐暴政失心汉布衣起义外戚乱政唐门阀更迭藩镇割据……………… “千秋岁月流转&#xff0c;世道几经更迭&#xff0c;无数王朝踏着烽烟崛起&#xff0…...

RHCE第四次练习

第 1 步&#xff1a;创建脚本文件vim mem_check.sh第 2 步&#xff1a;写入脚本内容第3步&#xff1a;运行脚本...

VisualHMI灵敏度调校全攻略:从触摸校准到性能优化

1. 项目概述&#xff1a;从“调参”到“调感”的界面设计进阶在工业HMI&#xff08;人机界面&#xff09;开发领域&#xff0c;尤其是使用像VisualHMI这类图形化设计软件时&#xff0c;“调节灵敏度”这个需求&#xff0c;远不止是拖动一个滑块、输入一个数值那么简单。它背后牵…...

瑞萨RA2L2 MCU深度解析:USB-C Rev 2.4与超低功耗设计实战

1. 项目概述&#xff1a;瑞萨RA2L2 MCU的定位与核心价值作为一名在嵌入式领域摸爬滚打了十多年的老工程师&#xff0c;每当看到像瑞萨RA2L2这样的新品发布&#xff0c;我的第一反应不是看那些华丽的参数&#xff0c;而是会立刻思考&#xff1a;这玩意儿到底能解决我手头项目里的…...

KLayout 0.30.0:如何用这款专业版图工具提升你的集成电路设计效率

KLayout 0.30.0&#xff1a;如何用这款专业版图工具提升你的集成电路设计效率 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout 如果你正在寻找一款既强大又灵活的开源集成电路版图查看与编辑工具&#xff0c;KLayo…...

从 SAP Easy Access Menu 到 FLP 一体化入口:重新理解经典事务在 SAP Fiori 中的价值

在很多企业的数字化项目里,SAP Fiori 往往被理解为一套全新的体验层,而 SAP GUI 则被视为必须逐步替换掉的传统界面。这个判断只说对了一半。真正成熟的 Fiori 落地,不是把旧世界一刀切掉,而是让新旧能力在同一个入口里顺滑协作。SAP Easy Access Menu 的意义,恰恰就在这里…...

【Perplexity实时学术搜索终极指南】:20年科研老兵亲授3大避坑法则与5倍效率提升实战技巧

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity实时学术搜索的核心原理与定位 Perplexity 实时学术搜索并非传统关键词匹配型检索系统&#xff0c;而是构建在语义理解、动态上下文建模与多源可信度验证三位一体架构之上的新一代学术信息交互范式…...

服务器训练过程程序崩溃,显卡资源释放方式

使用服务器训练过程出现程序崩溃&#xff0c;但是显卡资源未能释放的问题解决方式&#xff0c;主要是多卡使用过程&#xff0c;不能影响其他人正在使用的显卡资源。一、查看显卡使用情况 查看显卡正在使用的进程 watch nvidia-smi| NVIDIA-SMI 580.126.09 Driver V…...

告别内存焦虑!手把手教你读懂中科蓝讯AB530X的ram.ld文件,精准控制RAM复用

告别内存焦虑&#xff01;手把手教你读懂中科蓝讯AB530X的ram.ld文件&#xff0c;精准控制RAM复用 第一次打开中科蓝讯AB530X的ram.ld文件时&#xff0c;那些密密麻麻的符号和数字让我头皮发麻。作为一款主打性价比的蓝牙芯片&#xff0c;AB530X的RAM资源相当有限——就像在寸土…...