JavaScript中用于GIF图像的LZW位打包
LZW bit packing for GIF images in JavaScript
我正在开发一个可以生成GIF动画图像的JavaScript应用程序。GIF图像使用LZW压缩算法,因此我需要在JavaScript中实现它。
到目前为止,我已经得到了这段代码,它可以将字符串(二进制或非二进制)压缩为整数数组,然后解压缩它。完整的代码请参见pastebin链接(如果您认为有必要的话),下面是我运行这个代码片段得到的结果,它应该可以证明压缩和解压缩本身工作正常:var lzw = new LZW(8);
var input = "TOBEORNOTTOBEORTOBEORNOT#";
var compressed = lzw.compress(input);
console.log(input);
// "TOBEORNOTTOBEORTOBEORNOT#"
console.log(compressed);
// [84, 79, 66, 69, 79, 82, 78, 79, 84, 256, 258, 260, 265, 259, 261, 263, 35]
console.log(lzw.decompress(compressed));
// "TOBEORNOTTOBEORTOBEORNOT#"
现在的问题是,我不知道如何进行二进制打包。如果我正确理解LZW算法,只有compressed
的第一个位模式可以整齐地适合8位边界,其余的需要在9位边界上。
我浏览了维基百科关于Lempel-Ziv-Welch的文章,似乎对于GIF图像数据,我总是将压缩模式的最低有效位与字节的最低有效位对齐;但我试过了,我的GIF不起作用,GIF解析器对失败不是很明确,所以我不确定这是因为压缩还是别的什么。对我来说,这看起来也是一种巨大的比特浪费,所以它只会让这种方法更加可疑。
谁能给我指个正确的方向?GIF以"位流"的形式将数据打包到文件中——例如,前9位值的前8位进入一个字节,最后一位进入第二个字节;第二个9位的值填充了第二个字节的其余部分和第三个字节的两位,以此类推。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使图像在单击时展开到不大于浏览器
- Html页面上的多个Base64图像和平滑加载
- UIAutomation放大图像
- 使用javascript在Flash中加载外部图像
- 可以在这里为背景图像设置滤镜吗
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 使用 js 将背景图像设置为 HTML
- Javascript将图像src更改为淡入淡出
- 无法在本地计算机中将画布另存为图像
- 压缩phonegap中ios的图像插件
- JavaScript中用于GIF图像的LZW位打包