【问题标题】:Modify GIF89A file header修改GIF89A文件头
【发布时间】:2013-07-03 21:51:21
【问题描述】:

是否有任何库可以获取现有的动画 GIF 文件并设置/取消设置循环计数和循环标志?我有几个由 FFMPEG 生成的 GIF 文件,似乎无法将循环/循环计数标志设置为 FFMPEG。所以需要对 GIF 图像进行某种后期处理。

【问题讨论】:

    标签: java ffmpeg animated-gif


    【解决方案1】:

    解决方案(在 scala 中)就是这么简单:

      val raf = new RandomAccessFile(src, "rw")
      // skip GIF header, 6 bytes. Don't care of it much.
      raf.skipBytes(6)
      // don't need image dimension
      raf.skipBytes(4)
      val flags = raf.readUnsignedByte()
      val headerSize = 3 * (1 << ((flags & 7) + 1)) // 00000111 - size of color table
      val headerExists = flags & 128 // 10000000 - is there a color table at all
      // skip background color and pixel ratio
      raf.skipBytes(2)
      if (headerExists != 0) {
        raf.skipBytes(headerSize)
      }
      val signature = raf.readUnsignedShort()
      require(signature == 0x21ff)
      raf.skipBytes(13) // NETSCAPE 2.0
      raf.skipBytes(1) // GIF animation flag has to be 1
      ctx.loopCount.foreach {
        v =>
          raf.writeByte(v & 0xff)
          raf.writeByte((v >> 8) & 0xff)
      }
      raf.close()
    

    【讨论】:

    • 可以转成java吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2023-03-19
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多