vue项目将多张图片生成一个gif动图

这篇具有很好参考价值的文章主要介绍了vue项目将多张图片生成一个gif动图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当前做项目有一个需求是将多张图片生成一个gif动图的形式

类似下面图片几张图片叠加生成一个gif动图

图片涉及工作隐私,就不公开啦

 我们要引入一个gif.js的引入包,但是他没有直接引入的方式,只能从官方下载文件包,下载地址:git地址

下载好的包找到下面这个两个文件,引入到本地项目中去

vue项目将多张图片生成一个gif动图

将引入进来的两个包中的最后一行代码注释,避免映射

vue项目将多张图片生成一个gif动图

 然后:这里需要对gif.worker进行封装  

在gif.worker.js文件最后声明一个函数,将该文件除了注释部分的代码之外的所有代码复制变成文本,然后给一个变量  

生命的函数将复制的代码文本转化成 blob,然后转化成url的形式

export const gifWorkerContent = ` gif.worker.js文件代码(不要粘贴注释部分)  `

export const getGifWorker = () => {

  const blob = new Blob([gifWorkerContent])

  return window.URL.createObjectURL(blob)

}

然后在需要生成gif的单页面进行引入

 vue项目将多张图片生成一个gif动图

引入完成之后, 

进行函数处理, 需要获取到所有的地图图片canvas元素,然后通过canvas转换成图片

toGif(item, index) {
      const _this = this
      this.imgs = []
      const temDiv = document.getElementById(item + index)
      this.mapOptionsList[item].forEach((items, index) => {
        const div = document.getElementById(item + index)
        const temimg = div.querySelector('canvas')
        this.imgs.push(temimg) // this.imgs这个数组是所有需要生成gif的图片的集合
      })
      // 生成GIF
      try {
        const { width, height } =
         temDiv.getBoundingClientRect() // 这里定义一下gif图片的大小
        const gif = new GIF({
          workers: 2,
          quality: 10,
          width,
          height,
          workerScript: getGifWorker() // 自定义worker地址
        })
        // 对所有的图片进行处理,利用canvas绘制图片
        this.imgs.forEach((img, index) => {
          const cv = document.createElement('canvas')
          cv.width = width
          cv.height = height
          const ctx = cv.getContext('2d')
          ctx.fillStyle = '#fff'
          ctx.fillRect(0, 0, width, height)
          ctx.drawImage(img, -20, 0, img.width, img.height)// 这里的img参数内容 要是canvas或者svg或者img的dom元素
          ctx.fillStyle = '#000' // 这里的fillStyle要注意却分大小写
          ctx.font = '20px normal'
          const temname = _this.mapOptionsList[item][index].title.name
          ctx.fillText(temname, 200, 25)
          ctx.fillStyle = '#000' // 这里的fillStyle要注意却分大小写
          ctx.font = '20px normal'
          const temtime = _this.mapOptionsList[item][index].title.time
          if (index == 0) {
            ctx.fillText(temtime, 110, 55)
          } else {
            ctx.fillText(temtime, 150, 55)
          }
          gif.addFrame(cv, { delay: 1000 })
        })
        // 渲染gif
        gif.render()
        // 图片合成后
        gif.on('finished', (blob) => {
          const a = document.createElement('a')
          a.href = URL.createObjectURL(blob)
          a.download = _this.mapOptionsList[item][index].title.text
          a.click()
          gif.abort()
        })
      } catch (error) {
        console.log(error)
      }
    },

 然后就可以生成gif图片啦 可以看一下下面的图片哦

图片涉及工作隐私就不公开啦文章来源地址https://www.toymoban.com/news/detail-437252.html

到了这里,关于vue项目将多张图片生成一个gif动图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python3,为了无损压缩gif动图,我不得不写了一个压缩神器,真香。

    小屌丝 :鱼哥, 求助~ 求助~ 求助~ 小鱼 :你这是告诉我,重要的事情 说三遍吗? 小屌丝 :你可以这么理解。 小鱼 :好吧… 什么事情,这么慌慌张张。 小屌丝 :我的动图太大了, 无法上传到 C站。 小鱼 :呦呵… 你也开始写博文了? 小屌丝 :向鱼哥看齐。 小鱼 :没毛

    2024年02月06日
    浏览(48)
  • uniapp 小程序 多张图片生成海报以及下载海报

    上代码 下载海报 我的上一篇博客有后半部分图片保存代码! 搞定! 日常开发代码记录。

    2024年04月25日
    浏览(39)
  • Java原来可以这么玩!CV实现多张图片生成视频

    比如我像将几张图片变成一个视频的形式发不到短视频平台,虽然短视频平台也有上传图片变成视频的功能,但是我想要具体控制每张图片显示多久后切换到下一个图片,短视频平台目前无法实现,于是乎,我用java代码实现了这个功能。 生成视频展示 多张图片生成视频 Ja

    2024年01月17日
    浏览(44)
  • ps制作gif动图

    最后存储就可以了

    2024年02月09日
    浏览(34)
  • 【方便的Opencv】实现播放有声音的视频+附带图片生成gif

            因为最近老是用到Opencv这个库来处理视频,过程遇到了非常多的细节问题,最后把成品干脆直接放到博客来,这样以后可以随时过来取用。         Opencv读取视频没有声音的原因是因为:视频是分为图像与音频的,Opencv仅仅只是读取了一帧帧图像,并没有读取

    2023年04月09日
    浏览(45)
  • opencv实践项目-多张图片拼接之stitcher

    OpenCV从2.4.x版本之后多出来一个新的模型 图像拼接,该模块通过简单的高级API设置,可以获得比较好的图像拼接效果,OpenCV官方提供了一个高度集成的API函数 Stitcher,只要两行代码就可以得到一个很好的拼接图像。 其中第一行代码是创建拼接Stitcher的指针,第二行代码是调用

    2024年02月04日
    浏览(41)
  • Mac上快速将视频转化为GIF动图

    1、找到需要转为GIF的视频,使用QuickTime Player打开,找到屏幕左上角的QuickTime Player菜单,点击【编辑】-【修剪】 2、视频下方会出现一个时间轴,拖动选取自己想要的时间段,修剪完成后保存  3、右键剪辑好的视频,点击【显示简介】,查看【尺寸】 4、打开keynote,新建文稿

    2024年02月15日
    浏览(37)
  • Matlab动图保存——GIF制作与视频制作

    在Matlab绘制动图时,若想保存成GIF或视频,可参考以下代码。 (1)GIF格式 (2)视频格式

    2024年02月07日
    浏览(50)
  • 4 OpenCV实现多目三维重建(多张图片增量式生成稀疏点云)【附源码】

    本文是基于 OpenCV4.80 进行的,关于环境的配置可能之后会单独说,先提一嘴 vcpkg 真好用 从多张图片逐步生成稀疏点云,这个过程通常包括以下步骤: 初始重建: 初始两张图片的选择 十分重要 ,这是整个流程的基础,后续的增图都是在这两张图片的基础上进行的 对于输入图

    2024年02月06日
    浏览(43)
  • Android Studio 显示gif动图的两种方式

    将所需的.gif图片复制到drawable文件夹下,如下图所示。 在布局文件添加ImageView代码段,如下所示。 在MainActivity添加逻辑代码段,如下所示。 将下载的glide-3-6-0.jar复制到Project视图下的app-libs文件夹中,并右键选择Add As library导入包,如下图所示。 glide-3-6-0.jar的下载链接:htt

    2024年02月16日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包