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

建设一个旅游平台网站需要多少资金上海备案证查询网站查询网站

建设一个旅游平台网站需要多少资金,上海备案证查询网站查询网站,杭州余杭做网站公司,QQ点钓鱼网站后怎么做前言 使用 img 加载 GIF 图片,内容只会播放一次,之后就会自动暂停; 通过定时器在一段时间后重新加载图片的方式,会导致浏览器内存不断增大,并且可能会有闪烁、卡顿的问题; ImageDecoder WebCodecs API 的…

前言

使用 img 加载 GIF 图片,内容只会播放一次,之后就会自动暂停;

通过定时器在一段时间后重新加载图片的方式,会导致浏览器内存不断增大,并且可能会有闪烁、卡顿的问题;

ImageDecoder

WebCodecs API 的 ImageDecoder 接口提供了一种对编码图像数据进行解包和解码的方法。

在这里插入图片描述

ImageDecoder 只能在 localhost 或者 https 的 tab 页中获取到

代码

  1. canvas 设置 widthheight,和 GIF 图片尺寸一致
    <canvas width="1310" height="954"></canvas>
    
    或许你也可以通过一下方法动态设置尺寸;
    const img = new Image();
    img.src = '图片路径';
    img.onload = function() {var width = this.width;   // 图片宽度var height = this.height; // 图片高度console.log(`图片尺寸为:${width} x ${height}`);// some code... // 为canvas 设置 width、height
    };
    
  2. 通过 fetch 获取 GIF 图片资源,传入 url
    fetch(url).then((response) => decodeImage(response.body));
    
  3. decodeImage 方法对图片解码
    imageDecoder = new ImageDecoder({ data: imageByteStream, type: "image/gif" });
    imageDecoder.decode({ frameIndex: imageIndex }).then(renderImage);
    
  4. renderImage 渲染每一帧的图片
     function renderImage (result) {const canvas = document.querySelector("canvas");const canvasContext = canvas.getContext("2d");// 绘制图片 canvasContext.drawImage(result.image, 0, 0);const track = imageDecoder.tracks.selectedTrack;if (imageDecoder.complete) {if (track.frameCount === 1) return;// 如果序号超出了帧数,重置为 0if (imageIndex + 1 >= track.frameCount) imageIndex = 0;}// 解码下一帧图片并渲染imageDecoder.decode({ frameIndex: ++imageIndex }).then((nextResult) =>setTimeout(() => {renderImage(nextResult);}, result.image.duration / 1000) // 可以调整播放速度).catch((e) => {if (e instanceof RangeError) {imageIndex = 0;imageDecoder.decode({ frameIndex: imageIndex }).then(renderImage);} else {throw e;}});}
    

完整代码

<template><div><canvas width="1310" height="954"></canvas></div>
</template><script>
export default {mounted() {this.play(require("@/assets/images/animate.gif"));},play(url) {let imageDecoder = null;let imageIndex = 0;function renderImage (result) {const canvas = document.querySelector("canvas");const canvasContext = canvas.getContext("2d");canvasContext.drawImage(result.image, 0, 0);const track = imageDecoder.tracks.selectedTrack;if (imageDecoder.complete) {if (track.frameCount === 1) return;if (imageIndex + 1 >= track.frameCount) imageIndex = 0;}imageDecoder.decode({ frameIndex: ++imageIndex }).then((nextResult) =>setTimeout(() => {renderImage(nextResult);}, result.image.duration / 1000)).catch((e) => {if (e instanceof RangeError) {imageIndex = 0;imageDecoder.decode({ frameIndex: imageIndex }).then(renderImage);} else {throw e;}});}function decodeImage (imageByteStream) {imageDecoder = new ImageDecoder({ data: imageByteStream, type: "image/gif" });imageDecoder.decode({ frameIndex: imageIndex }).then(renderImage);}fetch(url).then((response) => decodeImage(response.body));}
}
</script>

相关链接

  • 纯前端如何实现Gif暂停、倍速播放
  • MDN ImageDecoder
http://www.yayakq.cn/news/346962/

相关文章:

  • 网站设计要多少钱做网站程序
  • 网站建设案例查询wordpress企业营销模板
  • 有新浪的域名怎么做网站传媒公司网站建设方案
  • 鹰潭网站设计天马网络 网站建设
  • 视频点播网站开发教程增城定制型网站建设
  • 如何更换网站新域名嘉定企业网站开发
  • 网站编程语言哪个好济南集团网站建设报价
  • 网站开发学习什么做原创视频网站
  • 专业型企业网站有哪些做微商有什么好的货源网站
  • 家政网站制作大岭山仿做网站
  • 织梦网站去除技术支持榆林市横山县建设局官方网站
  • c access做网站登录页面海外版tiktok官网入口
  • 网站设计制作案例做旅游产品的网站有哪些
  • 东城网站制作公司企业网站建设知识
  • 做网站三剑客稿定设计网站官网入口
  • 医疗网站建设网站东莞网站提升排名
  • 全网营销型网站 新闻休闲会所网站建设
  • led灯网站策划书尚义网站建设
  • jsp网站建设技术案例罗湖附近公司做网站建设哪家技术好
  • 普通网站与营销型网站有什么区别自适应网站优点缺点
  • 做网站是什么意思网络搭建是什么工作
  • 哪里有做商城的网站装修公司做网站有用吗
  • 没有做等保的网站不能上线对吗山西移动网站设计
  • 当当网网站建设策划书上海品划做网站
  • 门户网站建设情况总结wordpress搭建内网导航
  • 怎么让网站绑定域名访问不了中山网站建设文化方案
  • 重庆做网站开发的集中河南广告制作公司网站
  • 兰州新区建设银行网站小程序开发教程和源码
  • 有关网站设计与制作的论文建筑设计加盟分公司
  • 问卷调查网站赚钱程序员知识网站需要多少钱