问题标签 [lossless-compression]

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 投票
3 回答
28362 浏览

compression - 纯文本压缩算法的当前状态是什么?

为了纪念Hutter 奖,文本压缩的顶级算法(以及每种算法的简要说明)是什么?

注意:这个问题的目的是了解压缩算法,而不是压缩程序。

0 投票
3 回答
1703 浏览

java - Java中的无损视频编解码器播放

我需要使用无损视频编解码器对帧序列进行编码,并在 Java 应用程序中播放它们。我不在乎文件大小。输出帧应与输入帧完全匹配。即使在高比特率下,有损编解码器也不会这样做。

JMFFMJ似乎不支持这些著名的无损视频编解码器:

  • HuffYUV
  • 核心PNG
  • 拉格瑞斯
  • FFV1
  • ...

您知道 Java 支持的任何无损视频编解码器吗?

我考虑过的其他选择:

  • 动画 GIF:播放是否保证像真正的视频编解码器一样具有恒定的帧速率?
  • 加载并显示单独的帧:以恒定的帧速率执行此操作并且不丢失太多帧有多困难?
  • Proce55ing:视频播放库需要 Quicktime,我的平台上没有。

编辑:我最终决定以最高质量满足 JMF 的(非标准)MotionJPEG。它不是严格无损的,但仍然比 MPEG4 质量好得多。

0 投票
7 回答
3808 浏览

compression - 硬盘的硬件无损压缩?

我偶然发现了这篇关于基于硬件的硬盘加密的文章,并意识到这不仅可以提供一种保护数据的好方法,而且还可以加快我们用来加密数据的应用程序的速度。

这让我想知道...

是否可以对压缩做同样的事情,以便在读取和写入驱动器时对所有数据进行适当的压缩或解压缩?

我已经有一段时间没有进行任何固件编程了,所以我什至不确定这在技术上是否可行。

但是,如果是这样,它可能会为人们提供更多的存储空间。

在固件中使用这种方法进行编程的优缺点是什么?

0 投票
5 回答
1717 浏览

algorithm - 我在哪里可以找到产生无头输出的无损压缩算法?

你们中有人知道产生无头输出的无损压缩算法吗?例如不存储用于压缩的霍夫曼树吗?我不谈论硬编码的霍夫曼树,但我想知道是否有任何算法可以压缩和解压缩输入而不在其输出中存储一些元数据。或者这在理论上是不可能的?

0 投票
5 回答
6266 浏览

c# - 在 C# 中使用 jpegtran、jpegoptim 或其他 jpeg 优化/压缩

我有 100 种(可能是 1000 种)产品,每种产品都有 10-30 张图片,这些产品来自我整理的在线商店。我需要在不损失图像质量的情况下尽可能优化图像的文件大小。

我没有直接使用 jpegtran、jpegoptim 或任何其他 jpeg 优化器,但我注意到 punypng 在较大的 jpeg 图像上将文件大小缩小了约 4-6%。

在上传期间(通过 jumpoader)已经从图像中删除了元数据,因此这不再是一个选项/问题。

有没有办法让其中一个 jpeg 优化器从 C# 代码运行?

注意:我正在使用带有 IIS7 和 .Net 3.5 的共享 Godaddy 主机

0 投票
1 回答
116 浏览

lossless-compression - 压缩图像

我有 SQL Server2005 数据库,其中一半的数据是各种格式的图像。我想将所有图像转换为 jpeg2000 格式,并且还想调整图像大小(减小大小)。前端应用程序是在 VC++/MFC 上制作的,它在对话框中显示所有图像。

请提供如何将图像更改为 jpeg2000 以及如何减小尺寸的指导

0 投票
4 回答
2582 浏览

javascript - 优化图像加载时间。(想法不同)

我已经创建了一个交互式图像的东西......但加载时间太长了。

交互式图像的东西位于:

它使用 5 个图像来逐步浏览每个状态(通过单击和拖动)。我想保持图像的高质量;因此,任何进一步的 jpeg 压缩都结束了(包括 punypng 和 smush.it)。

有什么减少加载时间的想法吗?我愿意冒险使用数据 URI、画布、PNG 压缩(酷)等。

任何想法或指示都会有所帮助。

更新: 感谢所有提供建议的人,如果我使用了你提供的建议,我给了你一个加分。我已经设置了另一个静态子域 (s2),它应该在接下来的几个小时左右传播。今天晚些时候,我可能会将一些图像切换到这个新的子域。我还更改了加载图像的顺序,并在这里和那里进行了一些其他优化。

我希望有人知道如何利用每张图像中的冗余像素。有没有办法将所有图像编码到一个文件中,并以某种巧妙的方式使用 javascript 画布的 getImageData() 将它们读出?

我在http://www.eswd.com/southern/test.jpg上尝试了 getImageData 方法,由于 jpeg 的无损(质量=100 != 100%),它提出了这个:http://www.eswd。 com/southern/test.aspx。这不好。使用相同的技术将图像保存为 PNG 会导致文件大小大于包含所有数据的 jpeg(无红色边框)。

我正在考虑尝试使用 .APNG 并以这种方式读取像素数据……但由于该格式还处于开发的早期阶段,它似乎根本不会缩小文件大小……而且我我不确定画布是否会让我阅读动画中的各个 PNG 帧。

0 投票
2 回答
508 浏览

image-processing - 有损压缩的图像处理

如果我们将无损压缩图像的图像处理与有损压缩图像的图像处理进行比较,后者是否提供与前者相当的结果。

我问这个问题是因为无损压缩产生的图像对人眼来说是可以的,但它们在微小的细节上会有所不同,这可能会影响计算机对图像的处理。但我说不出有多少。

0 投票
6 回答
2660 浏览

networking - 对于极少量数据(3-4 kib?)的最佳压缩库是什么?

我正在开发一个从 Quake 2 松散地继承下来的游戏引擎,添加了一些诸如脚本效果之类的东西(允许服务器向客户端详细指定特殊效果,而不是只有客户端能够使用的有限数量的硬编码效果的。)这是网络效率与灵活性的权衡。

我遇到了一个有趣的障碍。看,最大数据包大小是 2800 字节,每个客户端每帧只能发出一个。

这是做“火花”效果的脚本(可能对子弹撞击火花、电击等有好处) http://pastebin.com/m7acdf519(如果您不理解,请不要出汗;这是我制作的自定义语法,与我提出的问题无关。)

我已尽一切可能缩小该脚本的大小。我什至将变量名简化为单个字母。但结果正好是 405 个字节。这意味着每帧最多可以容纳 6 个。我还想到了一些服务器端更改,可能会再减少 12 个,而协议更改可能会再节省 6 个。虽然节省会因您使用的脚本而异。

然而,在这 387 个字节中,我估计只有 41 个字节在效果的多次使用中是唯一的。换句话说,这是压缩的主要候选对象。

恰好 R1Q2(具有扩展网络协议的向后兼容 Quake 2 引擎)具有 Zlib 压缩代码。我可以解除此代码,或者至少密切关注它作为参考。

但是 Zlib 一定是这里的最佳选择吗?我能想到至少一种替代方案,LZMA,而且很容易有更多。

要求:

  1. 必须非常快(如果每秒运行超过 100 次,性能损失必须非常小。)
  2. 必须将尽可能多的数据塞进 2800 字节
  3. 元数据占用空间小
  4. GPL 兼容

Zlib 看起来不错,但还有什么更好的吗?请记住,这些代码还没有被合并,所以有足够的实验空间。

谢谢,-马克斯

编辑:感谢那些建议将脚本编译成字节码的人。我应该说清楚——是的,我正在这样做。如果你喜欢你可以在我的网站上浏览相关的源代码,虽然它仍然没有“修饰”。
这是服务器端代码:
Lua 组件:http
://meliaserlow.dyndns.tv:8000/alienarena/lua_source/lua/scriptedfx.lua C 组件: http://meliaserlow.dyndns.tv:8000/alienarena/ lua_source /game/g_scriptedfx.c
对于我发布的特定示例脚本,这将 1172 字节的源代码缩小到 405 字节——仍然不够小。(请记住,我想将尽可能多的这些内容放入 2800 字节中!)

EDIT2:不能保证任何给定的数据包都会到达。每个数据包都应该包含“世界状态”,而不依赖于先前数据包中传达的信息。通常,这些脚本将用于传达“眼睛糖果”。如果没有空间,它就会从数据包中丢弃,这没什么大不了的。但是,如果掉了太多,事情开始在视觉上看起来很奇怪,这是不可取的。

0 投票
2 回答
1240 浏览

c++ - 1.66kBytes 等小数据的最佳压缩方案是什么?

该数据存储在一个数组中(使用 C++),并且是 125 位的重复,每个位彼此不同。它最后还有 8 条 12 个 ASCII 字符的消息。请建议我是否应该在阵列内使用差分压缩,如果是的话如何?

或者我应该对整个阵列应用其他一些压缩方案吗?