gpt4 book ai didi

java - 修改GIF89A文件头

转载 作者:行者123 更新时间:2023-12-01 14:21:40 24 4
gpt4 key购买 nike

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

最佳答案

解决方案(在 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 - 修改GIF89A文件头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com