Lua 中的 LZW 解压缩

如何在 Lua 中将 LZW 压缩的 Gif 数据解压缩成单个 Gif 帧中每个像素的索引数组? 目前,我正在开发一个 Gif 解码器,以便我可以在屏幕上显示任何 89a 版本的 Gif 动画,而无需使用某种文件上传方法来上传游戏资源。然而,唯一我还无法读取的是 LZW 压缩数据。我已经有了 LZW 最小代码大小和图像数据中的 # 字节。我从这里得到了它们。

我感觉很愚蠢,但我无法从其他查询中弄清楚发生了什么,所以请求帮助。

--在循环中针对每个子块
local n,e = 01
local max =(2 ^ fbs)-1
-- stream 是一个包含顺序反转的二进制码并组合每个节字节的字符串
-- fbs 是第一个字节的大小(LZW 最小代码大小+1)
while n <=#stream do--此子块
 n = n + fbs-1
 local bits = stream:sub(e,n)--提取下一节
如果 binVal(bits)== max then--检查二进制值并增加 fbs
 fbs = fbs + 1
 max =(2 ^ fbs)-1
 end
--我应该如何处理提取的字节???
 e = n + 1
end
点赞