问题标签 [lzw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP LZW 二进制解压函数
我一直在网上寻找,在 PHP 中找不到与这些 javascript 函数输出的数据一起使用的 LZW 解压缩实现:
我真的只需要一个 PHP 中的解压缩算法,它可以与上面的压缩 javascript 函数一起使用。
上面的 lzw_encode 函数将“This is a test of the compression function”编码为“This Ă a test ofĈhe comprĊsion functěn”
我发现的库要么有问题(http://code.google.com/p/php-lzw/),要么不输入 UTC 字符。
任何帮助将不胜感激,
谢谢!
php - PHP 多字节 UTF-8 字符串正在缓慢降级
我正在尝试将以下 javascript 函数转换为 PHP:
这是我转换后的代码:
虽然此函数适用于某些 LZW 编码的字符串,但如果您使用足够长的字符串,您会发现它不是 100% 准确的。我的猜测是多字节字符串的问题和我的粗心。有人有想法么?
algorithm - LZW解压算法
我正在为必须实现 LZW 压缩/解压缩的任务编写程序。我为此使用以下算法:
-压缩
-减压
对于压缩阶段,我只是输出表示字典条目索引的整数,起始字典也由 ascii 字符(0 - 255)组成。但是当我进入解压阶段时,我会收到此错误,例如,如果我压缩一个仅包含“booop”的文本文件,它将通过这些步骤生成一个输出文件:
输出.txt:98 111 257 112
然后当我来解压文件时
257 (oo) 尚未添加。谁能看到我在这里出错的地方,因为我很难过。算法错了吗?
parallel-processing - 是否可以使 lzw 压缩/解压缩并行?
我已经阅读了这篇关于如何使用 LZW 压缩/解压缩数据的文章,但我希望让它使用多个线程......但我认为这是不可能的。你怎么看?关于这个主题的任何论文或文章?甚至提示如何做到这一点。
c# - C# 中的 GIF LZW 压缩
我目前正在使用 C# 进行编程以制作图像解码器的自学练习,我已经制作了几个可行的解决方案,因此我认为我应该在转向更复杂的 PNG 和 JPEG 格式之前处理 GIF。我的问题是我真的很难想出一个解压缩 LZW 子块的实际解决方案。我只是在努力弄清楚如何尝试它;我见过几个松散的伪代码示例,但它们似乎使用了我在 C# 中没有真正遇到过的术语以及我发现难以理解的过程。大多数还专注于压缩,但解压缩是我最感兴趣的。
例如,在 C# 中创建代码表的最佳方法是什么?字节数组、字典或其他东西?那么我该如何解压数据呢?我不一定要代码,只是一些帮助或指向其他人已经完成的示例的链接(我发现图像解码有点被忽视了在线资源和教育材料)。
谢谢。
perl - 使用 Perl 将 8 位以外的 GIF 图像添加到 PDF
我正在尝试将 8 位以外的非隔行 GIF 图像添加到 PDF 文档,而不必使用PDF::Create
Perl 完全解码比特流。
作为PDF 标准LZWDecode
一部分的算法要求所有图像的最小 LZW 代码大小为 8 位,并且硬编码为仅嵌入 8 位图像。PDF::Create
到目前为止,我已经调整了图像加载器以PDF::Create
读取 5 位图像并完全解码 LZW 流。然后我可以使用编码器算法PDF::Create
将图像重新打包为 8 位。
我想做的是消除内存密集型解码/编码步骤。该线程表明,这可以通过“加宽或移位位”来使 LZW 代码适合LZWDecode
.
我联系了线程作者,他提供了一些额外的细节,特别是颜色索引的代码保持不变,但用零填充(例如,[10000]
变为[000010000]
),代码分别更改为<Clear>
和,所有其他代码偏移256 - 原始代码。<End>
<256>
<257>
<Clear>
但是,由于雇主的限制,他无法进一步详细说明。<4095>
特别是,当修改值超过(LZW代码表的最大索引)时,我不确定如何处理代码。我也不确定如何将修改后的代码重新打包成比特流。
我目前使用的算法如下。
perl - 使用 Perl 修改比特流
在 Perl 中修改比特后,如何将比特重新打包到比特流中?
我目前正在使用以下内容来解包:
例如,输出可能是 16。
编辑:
这个问题与GIF图像的数据块有关。
我要做的是填充 LZW 代码以匹配 PDFLZWDecode
方法所需的长度。
LZWDecode
需要 8 位图像,其中<Clear>
代码为 256,<End>
代码为 257(PDF 参考,第 44 页。)
对于 5 位图像,代码 0-31 映射到图像全局颜色表中的颜色,分别<Clear>
为 32 和<End>
33。
所以我需要重新打包比特流,使代码 0-31 保持不变,但 32+ 偏移 256-32。
我正在为 Windows 使用 ActiveState Perl。
c++ - LZW 压缩和字典
我正在研究在 C++ 中实现 LZW 压缩,但不确定最好的字典实现。
哈希表是有道理的,但我不明白我如何能够“重新分配”值。如果表已满,我需要能够开始覆盖以前的(最旧的)多字符字典条目。哈希表需要我跟踪这些,找到它,删除它,然后插入新的。
有什么建议么?
function - Lua 中的 LZW 压缩
这是 Lempel-Ziv-Welch 压缩的伪代码。
我正在尝试在 Lua 中对此进行编码,但它并没有真正起作用。这是我在 Python 中以 LZW 函数为模型的代码,但在第 8 行出现“尝试调用字符串值”错误。
我真的很想得到一些帮助,或者让我的代码运行,或者帮助我在 Lua 中编写 LZW 压缩。非常感谢!
function - Lua 中的 LZW 数据压缩
可能的重复:
Lua 中的 LZW 压缩
这是我在 Lua 中使用 LZW 压缩方法压缩数据的代码。我的问题是该函数返回字符“T”,而不是返回完整的压缩字符串“TOBEORNOTTOBEORNOT”。谢谢!