问题标签 [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.

0 投票
2 回答
2112 浏览

c++ - LZ函数的使用不清楚

注意:这个问题是关于 Windows LZ 函数的,它们是以前缀 LZ 开头的文件管理函数:LZOpenFile、LZCopy、LZClose 等。如果 Google 没有错,这些可能是 Windows API 中文档记录最差的函数之一.

我试图弄清楚哪种文件实际上适合与 Windows LZ 函数一起使用。官方文档提到“使用 Compress.exe 压缩的数据”,但这些函数也能够处理未压缩的文件,在这种情况下不应用解压缩。

现在,当我使用资源工具包中的 compress.exe 实用程序压缩文件(使用 -Z 或 -ZX 开关),然后使用此处描述的过程对其进行解压缩时,我得到的只是源文件未更改,就好像它没有按预期压缩。即使使用原始 Windows XP 安装 CD 中的压缩文件(在 i386 文件夹末尾带有下划线的文件),我也得到相同的结果。结论:无论我尝试解压缩什么文件,我都会将其恢复原状。

我使用的代码非常简单,它基本上重现了 MSDN 文章中描述的步骤,所以如果我有错误,我想它一定是在其他地方。但我仍然倾向于认为我只是使用了错误的输入文件。有没有人对这些 LZ 功能有任何经验?这是我的 C++ 代码。

0 投票
1 回答
298 浏览

gif - GIF 理解图像解码 - Lempel-Ziv-Welch

我正在尝试构建一些代码,可用于将 GIF 文件转换为另一种文件格式(我已经知道如何创建。[我正在尝试简化从 GIF 到 GRF 的转换——一种打印机图形文件格式。])

我正在处理来自维基百科(http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Image_coding)的信息。

有一节描述了从字节到 9 位代码的转换。他们展示的例子是:

我能够从文件生成右侧给出的字节。(我完全按照他们在文章中描述的方式创建了一个文件(3x5,MSPaint 中黑色像素为 0,0 和 1,1。)

我不明白的是他们如何将这些字节转换为 9 位十六进制代码。

00如何变成100?二进制中的竖线 (|) 是什么意思?

0 投票
5 回答
6095 浏览

algorithm - 解析 GIF 栅格数据 - LZW

我一直在尝试在 PHP 中解压缩 GIF,似乎除了 LZW 解压缩之外的所有东西都已完成。我保存了显示的图像:示例图像

此图像是 3 x 5,如下所示:

我决定在 Binary 中手动完成并解析这个文件。手动解析的结果如下。我仍然对如何在这里解码栅格数据感到困惑。有人可以分解栅格数据如何成为图像吗?我已经能够分解一张图片,但没有别的(不是这张图片)。我已经发表了我对这应该如何分解的理解,但我显然做错了。

我的尝试

初始代码大小 = 3 一次读取 2 位

在这一点上,我已经错了。第一种颜色应该是蓝色。

我一直在使用的资源:

http://www.daubnet.com/en/file-format-gif http://en.wikipedia.org/wiki/Graphics_Interchange_Format http://www.w3.org/Graphics/GIF/spec-gif87.txt

0 投票
1 回答
1132 浏览

c - LZW Compression with Entire unicode library

I am trying to do this problem:

Assume we have an initial alphabet of the entire Unicode character set, instead of just all the possible byte values. Recall that unicode characters are unsigned 2-byte values, so this means that each 2 bytes of uncompressed data will be treated as one symbol, and we'll have an alphabet with over 60,000 symbols. (Treating symbols as 2-byte Unicodes, rather than a byte at a time, makes for better compression in the case of internationalized text.) And, note, there's nothing that limits the number of bits per code to at most 16. As you generalize the LZW algorithm for this very large alphabet, don't worry if you have some pretty long codes.

With this, give the compressed version of this four-symbol sequence, using our project assumptions, including an EOD code, and grouping into 4-byte ints. (These three symbols are Unicode values, represented numerically.) Write your answer as 3 8-digit hex values, space separated, using capital hex digits, not lowercase.

32767 32768 32767 32768

The problem I am having is that I don't know the entire range of the alphabet, so when doing LZW compression I don't know what byte value the new codes will have. Stemming from that problem I also don't know the the EOD code will be.

Also, it seems to me that it will only take two integers the compressed data.

0 投票
1 回答
424 浏览

c - lzw压缩的可变长度字符串数组

这里是函数本身。我在那里有一个段错误,因为显然我无法将字符串分配给数组中的那个值。clang/gcc 都给我一个警告。Clang 的更好一点,即“期望 char 分配 char *”。我不知道有任何其他方法可以使用该词典,因为我尝试过的所有方法都不起作用。我还将包含它的所有辅助函数,但我很确定它在这个函数本身中。

像往常一样,我会投票赞成任何有效的答案,我会接受我个人选择的答案。无论如何,我将在下面发布其余的“帮助”功能。

正如你所看到的,我正在尝试用纯 c 语言做一个类似 lzw 的程序。我总是用 -Wall -std=c99 编译(因为我偶尔会使用 p99.h 来滥用预处理器宏)。但由于某种原因,我无法让我的字符串数组工作,我知道我使用过类似的代码(但显然我没有备份它......)但无论如何是的。我无法弄清楚我应该如何(正确地)这样做。我将非常感谢任何人在此问题上的帮助。

按照正常情况,我在这里发布的任何代码都是公共领域,除非另有说明,一旦我完成了整个工作,我将其发布在这里,以便其他寻找它的人也可以让它工作。

最后感谢您阅读此主题,并为我提供帮助(如果您知道如何)。一旦我去城里回来(如果已经有答案),我会检查它/然后标记一些东西。但是不要让这让你灰心,因为你的解决方案可能比我选择的解决方案更好,而且你仍然会得到支持。

编辑1:将代码编辑为以前的内容(根据git)。

编辑2:修复了很多东西,让它看起来更好。数组比较功能仍然不起作用(出于某种奇怪的原因)。

0 投票
1 回答
256 浏览

perl - PERL LZW 压缩,输出代码为 9 位长

从页面: http ://www.verypdf.com/document/pdf-format-reference/pg_0072.htm

我正在尝试使用相同的细节来压缩和解压缩,它不能工作任何 perl 模块(LZW)

我想创建一个执行 LZW 压缩的 perl 脚本

代码 :

我使用过任何其他模块,上面的代码只是示例。但我仍然没有得到正确的输出

0 投票
1 回答
227 浏览

c - LZ压缩技术

我试图实现 LZ 压缩....并试图使用它来压缩一些文件....但是我遇到了一些逻辑问题...我真的不知道如何存储数据返回文件...真正的问题是:假设我现在有一个匹配的字符串“ls”[表中的条目已经在第 289 个索引处完成] 如果将文件中的 289 替换为 ls 那么该怎么做? ? 因为如果较早的“ls”占用 2 个字节,那么现在 289 将占用 3 个字节。如果以上是正确的,那么为什么这种方法称为压缩,如果不是,那么正确的方法是什么……我只需要一个答案,特别是详细地阐明我对这个逻辑的了解。

我到现在为止制作的一些代码:

0 投票
1 回答
435 浏览

javascript - 用于 javascript lzw 压缩的字母字典,“仅使用这些字符”-string

祝各位读者和帮助者们美好的一天,我想利用我最近发现的一个 javascript 函数,它的 LZW 压缩字符串。

这个函数实际上工作得很好,我得到的唯一问题是我想通过 websockets 传输编码的字符串,而不需要额外的编码(例如 base64),但这并不是每次都有效。有时压缩的字符串包含无法通过 websockets 传输的字符,它会引发一个 javascript 错误,表明该字符串具有非法字符。所以我的想法是在编码过程中只使用可接受的字符,比如应该用于压缩的字符“白名单”。我从代码中了解到的是它采用了某个数字的 charCode,所以我虽然可以创建自己的 charCodeSet,但我真的不知道如何实现它以及它是否可以工作。

  • Q1:我该怎么做才能让我的 lzw 编码只使用我定义的字符串的字符?
  • Q2:我还能如何“http/s”传输这些 websocket 不想传输的中文、阿拉伯文和控制字符?

顺便说一句,这是 Chrome 抛出的错误:

更新1:虽然如果你也看到解码功能它可能会有所帮助

在这里我也必须实现我的自定义字符集,我猜?..

0 投票
1 回答
541 浏览

java - LZW解码错过第一个代码入口

我遵循了 Rosetta Java 代码实现。

我尝试使用我自己的字典而不是使用的 ASCII 字典进行此 LZW 编码。当我尝试使用自己的字典时,解码出现问题......结果是错误的,因为每个解码的单词都没有查看第一个'a'字母。结果必须是'abraca abrac abra'而不是'braca brac bra'

String act = "" + (char)(int)compressed.remove(0);我在这将删除所有第一个“a”字母中看到了 decode() 方法中的问题。但我不知道如何修改这一行......例如,如果我使用String act = "";而不是上面的行......编码会很错误,或者使用另一个命令......我不知道如何我可以解决这个小问题吗?或者我正在寻找解决方案的坏方法。

}

0 投票
1 回答
3925 浏览

matlab - matlab中的LZW如何将图像放入LZW算法

提前感谢您的帮助,我的问题是我在 Matlab 中进行 LZW 压缩,我通过选择对话框选择图像,然后通过imread命令读取图像,我不知道该怎么做或怎么做有是 LZW 算法,但是如何将图像引用到该算法,这是我的尝试,这是错误的,我的问题是在imread我应该投入什么达到 LZW_Encoding 算法以及压缩后如何存储数据之后

问候Wadoo

LZW_Encoding 是一个开源函数,我的问题不在于 LZW 函数,而是如何将图像引用到它以及如何编写编码后的文本文件

http://www.mathworks.com/matlabcentral/fileexchange/4899-lzw-compression-algorithm/content/norm2lzw.m