PNG:deflate 和 zlib

2024-05-04

我试图理解 PNG 的压缩 - 但我似乎

网上查了很多自相矛盾的资料... 我想了解 - LZ77部分:带链表的哈希表中的搜索是如何完成的?这是在 deflate 中定义的吗?或者在zlib中实现?可以选择搜索方法吗? - PNG 编码器/解码器可以设置一些压缩参数(策略、过滤器等),或者 PNG 是否有默认值? - LZ77 部分是否进行贪婪或惰性评估?或者这也是一个选择吗? - 最后:两棵霍夫曼树,它们是否被压缩在第三棵树中,并且所有三棵树都被编码了?或者这两棵树仅用它们的代码长度进行编码?

zlib 实现与其他 deflate 实现不同吗?也许这就是我所有困惑的来源?

感谢您的任何帮助!!我的新工作需要这个

LuCu


PNG压缩是在zlib https://www.rfc-editor.org/rfc/rfc1950格式。 zlib 格式使用deflate https://www.rfc-editor.org/rfc/rfc1951。使用的代码通常是zlib库 http://zlib.net/.

格式未指定用于压缩的算法。 zlib 库 deflate 算法使用哈希链在滑动窗口中搜索匹配的字符串。 zlib 的 deflate 采用几个参数进行压缩调整 -- 请参阅deflateInit2() https://github.com/madler/zlib/blob/master/zlib.h#L527.

deflate 格式指定动态块前面的霍夫曼编码的压缩。文字/长度和距离代码代码长度是游程长度和霍夫曼编码本身。

放气压缩机还有其他实现LZMA SDK http://www.7-zip.org/sdk.html and 谷歌的zopfli https://code.google.com/p/zopfli/,这两种方法都使用更密集的方法,需要更多的时间才能获得较小的压缩收益。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PNG:deflate 和 zlib 的相关文章

  • C#,使用 zlib 解压缩流

    我正在尝试解压缩字节数组 byte bloc 120 156 211 97 144 76 247 142 98 228 98 0 2 70 101 6 166 8 16 131 133 131 145 129 209 134 129 133
  • 如何使用 ImageMagick 查找每英寸像素 (PPI)

    我可以使用以下命令获取 JPEG 图像的 PPI identify format w x h x x y mypic jpg 1600 x 1200 72 PixelsPerInch x 72 PixelsPerInch 但是 当我在 PN
  • 如何在单个 HTML / PHP 文件中嵌入图像?

    我正在创建一个轻量级的单文件数据库管理工具 我想将一些小图标与它捆绑在一起 在 HTML PHP 文件中嵌入图像的最佳方法是什么 我知道一种使用 PHP 的方法 我可以使用 GET 参数调用同一个文件 该参数将输出具有正确标头的硬编码二进制
  • 如何使用 Python 和 Pillow 将此索引 PNG 转换为灰度并保持透明度?

    我正在尝试使用 Python Pillow 将图像转换为灰度 我在大多数图像中都没有遇到困难 但是 在使用不同图像进行测试时 我发现了 BeeWare 项目中的这个徽标 我知道它已使用某些图像编辑器进行了进一步编辑 并使用 ImageOpt
  • Android 2.2 导致图片颜色失真?

    我的应用程序中有一些 png 文件 我需要在运行时加载这些 并从中获取某些像素的确切颜色 重要的是 我不想缩放这些图片 我不会直接在用户界面上显示它们 它们充当地图 现在 在Android 1 5上 这已经没有问题了 我将这些图像放在 re
  • 意象。将颜色更改为透明

    我想更改此图像的黑色边框 http dev loungeup net im http dev loungeup net im 使用 PHP 中的 Imagick 实现透明 结果图像应该具有可见的灰色边框 灰色边框内的图像可见 灰色边框之外的
  • 保存哈夫曼代码时出现问题?

    我想将霍夫曼代码保存到文件中 我怎样才能做到这一点 我将霍夫曼代码保存到字符串中 但生成的文件的大小比原始文件大 一种非常简单的方法是一次写一点 如下所示 unsigned char acc Accumulator of bit waiti
  • 压缩独特的数据流

    我有大量的整数数组 每个整数都有几千个整数 每个整数通常与前一个整数相同或仅相差一两位 我想将每个阵列缩小到尽可能小 以减少磁盘 IO Zlib 将其缩小到原始大小的 25 左右 这很好 但我不认为它的算法特别适合这个问题 有谁知道对于此类
  • 是否可以在GPU中实现Huffman解码?

    我们有一个用霍夫曼编码编码的数据库 这里的目的是将其及其关联的解码器复制到 GPU 上 然后在 GPU 上对数据库进行解码 并在解码后的数据库上执行操作 而无需将其复制回 CPU 上 我还远远不是霍夫曼专家 但我所知道的少数人表明 它似乎是
  • 不同 zlib 压缩级别的压缩比

    我正在考虑使用什么级别的 zlib 压缩 并且我很好奇可以在 zlib 命令中指定的不同压缩级别的不同压缩率 这zlib手册 http www zlib net manual html Constants具有以下用于指定压缩级别的常量 de
  • 从 PNG 图像中提取元数据

    我正在尝试从 PNG 图像格式中提取元数据 我正在使用这个库 http code google com p metadata extractor http code google com p metadata extractor 尽管它声称
  • Java applet - 以 png 格式保存图像

    我正在创建一个用于制作头像的简单小程序 您可以选择脸部 头发 眼睛等 然后将其作为 png 文件保存到光盘上 简单版本 为了简单起见 没有界面 如下所示 import java awt import java applet import j
  • PNG:deflate 和 zlib

    我试图理解 PNG 的压缩 但我似乎 网上查了很多自相矛盾的资料 我想了解 LZ77部分 带链表的哈希表中的搜索是如何完成的 这是在 deflate 中定义的吗 或者在zlib中实现 可以选择搜索方法吗 PNG 编码器 解码器可以设置一些压
  • 黑白 PNG 转 SVG

    我有一个河流 土地掩码来区分土地与河流 湖泊 该文件的大小为 W 43 200x H 21 600 由于 RAM 立即填满 因此无法打开该文件 我已将文件分成 3600 3600 块 它们可以正常打开 然而 我试图在谷歌地图中绘制陆地上的文
  • Ruby 安装由于缺少扩展而中止:openssl、readline、zlib 编译错误

    我正在使用 macOS Catalina 我正在尝试通过 rbenv 安装旧版本的 Ruby 1 9 3 2 1 2 但是 在尝试安装旧版本时 我不断收到以下错误 安装 2 4 或更新版本时没问题 我已经尝试过 brew install o
  • 快速搜索压缩文本文件

    我需要能够在大量压缩文件 txt 中搜索文本 压缩可能会改变为其他东西 甚至成为专有的 我想避免解压所有文件并压缩 编码 搜索字符串并在压缩文件中搜索 这应该可以通过对所有文件使用相同的码本使用霍夫曼压缩来实现 我不想重新发明轮子 所以 任
  • 在 Delphi 2007 中将具有透明度的位图保存为 PNG

    我有一个包含透明度信息的 Delphi 位图 32 位 我需要将其转换并保存为 PNG 文件 同时保留透明度 我目前拥有的工具是graphics32 Library GR32 PNG 由Christian Budde 提供 和PNGImag
  • C# MonoGame 有帮助吗? (Content.Load("入侵者");)

    我正在 MonoGame 中使用 Open GL 制作太空入侵者游戏 并且尝试加载已添加到内容文件夹中的纹理 这是一个名为 Invader 的 PNG 文件 我使用的代码是 invader Content Load
  • 使用 ImageMagick/convert 创建半透明 PNG

    我有 PNG 文件 我想将整个图像转换为半透明 该图像将在 KML 文件中引用为 Google 地球 地图中使用的图标叠加层 使用 ImageMagick 向我建议了以下示例convert命令 但似乎都不起作用 第一个示例会导致错误 usr
  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic

随机推荐

  • 共享首选项在运行时是否存储在内存中?

    Android 中的共享首选项是否总是在启动时读取并在运行时存储在内存中 如果没有 还有比这更有效的读取偏好的方法吗 settings getSharedPreferences myPrefsFile 0 int answer settin
  • iPhone 4 iOS 5 电池电量监控我需要将 setBatteryMonitoringEnabled:NO 添加到定期电池检查吗?

    我正在运行一个应用程序 可以在一夜之间对加速度计和陀螺仪数据进行采样 这是一个非常耗电的操作 我想教我的应用程序识别电池何时变低 这是我的原型代码 每 10 分钟检查一次电池电量 NSDate date NSDate date if int
  • Protractor:如何从字符串中删除多余的空格,就像我们在 java getText.trim() 中使用的那样

    如何从字符串中删除多余的空格 就像我们在中使用的那样java getText trim in 量角器 我这样使用 var columnvalue rows get 9 getText var columnvalue1 columnvalue
  • jQuery - 如何确定哪个链接被点击

    我有一个简单的 PHP 代码 可以生成n以下代码的副本 p class center Click Here to See Data p div class divSDB L2 div 它是使用 PHP 生成的 因此副本的数量预先未知 在另一
  • 返回 SOAP xml - Android

    在处理 Web 服务时 我使用适用于 Android 的 k2SOAP SoapObject request new SoapObject NAMESPACE METHOD NAME request addProperty ProjectI
  • 如何访问/记住闪亮中未选中的值?

    我正在摆弄 R 中的闪亮应用程序 该应用程序有 选择列表Input A 主要组 具有可能的值 A B 和 或C 一组复选框Input b 子群 它们是 通过选择动态填充Input A列表 chkb a 和 chkb b 代表 A c d 代
  • 如何访问 pytest 夹具中的所有标记?

    我正在使用 pytest 我想用标记来标记我的测试 这些标记将指定固定装置要在驱动程序中加载哪个页面 这可以轻松地与行为上下文对象一起使用 但我找不到如何使用 pytest 来做到这一点 以这段代码为例 import pytest pyte
  • ASP.NET 2.0 - 带有 tbody / thead 的 DataGrid

    有没有办法让 DataGrid 控件呈现 tbody 和 thead HTML 元素 虽然我喜欢 user186197 的答案 但该博客文章使用反射 但在非完全信任的托管环境中可能会出现问题 这是我们使用的 没有黑客 public clas
  • richTextBox 字符数限制?

    我在丰富的文本框中存储大量文本时遇到问题 我正在尝试读取一个相当大的文本文件 从 90mb 到 450mb 的任意位置 并将我读到的内容放入富文本框中 它可以在一个简单的程序中运行 但是当我在一个复杂的程序中运行时 我会得到一个 OutOf
  • 如何在不使用 CreateUser 的情况下在 ASP.NET 成员资格表中创建用户

    我想将用户和帖子从我正在使用的现有论坛迁移到 ASP NET 成员资格表 而不使用 CreateUser 基本上我想维护用户ID 以便当我迁移帖子时它们继续与正确的用户关联 有没有办法做到这一点 或者我最好只使用 CreateUser 然后
  • filepicker.io - 转换()和存储与 FPUrl 转换

    我有一个应用程序 用户可以在其中上传图像 并且它必须提供三种不同的尺寸 缩略图 中尺寸 全尺寸 我的用户不需要修改该图像 似乎有两个选择 选项1 每当我想显示缩略图时 就使用图像转换网址 前任 选项2 将convert 与store 结合使
  • Capistrano 和 GitHub Private Repo – 权限被拒绝(公钥)

    我继承了一个托管在 Linode 上的 Rails 项目 之前的开发人员使用 BitBucket 存储库以及 Capistrano 进行部署 我已经在 GitHub 上设置了一个私人存储库 并且正在尝试让 Capistrano 配方发挥作用
  • 由于标志字节串 -lt-0_10_4,无法使用 Stack 构建 hello world 程序

    通过生成一个裸露的 hello world 项目 stack new myproject simple 每当我跑步时stack setup stack init or stack build我总是出现以下错误 Downloading lts
  • 如何删除“绿屏”肖像背景

    我正在寻找一种方法来自动从大量图片中删除 透明 绿屏 肖像背景 到目前为止 我自己的尝试 呃 不太成功 我正在四处寻找any有关该主题的提示 解决方案或论文 商业解决方案也很好 在您评论并说不可能自动执行此操作之前 不 事实并非如此 实际上
  • PHP 扩展 mysqli 和 nd_mysqli 之间的区别[重复]

    这个问题在这里已经有答案了 Mysqli 准备好的语句 如下所示 在以下情况下会抛出以下错误 get result 叫做 stmt connection gt prepare select column from table where i
  • 是否可以在没有 LoadUserProfile = True 的情况下运行 WIF

    我正在尝试在共享主机上运行 WIF 依赖方应用程序 他们不会将 IIS 设置 LoadUserProfile 设置为 true 因此我收到以下错误 消息 数据保护操作失败 这可能是由于没有为当前线程的用户上下文加载用户配置文件而导致的 这可
  • 在 WPF 字体大小和“标准”字体大小之间转换

    我注意到在 WPF 中 12 磅的默认字体大小大致相当于 普通 应用程序 例如写字板 中的 9 磅 WPF 中的 10 磅大约是 7 磅标准 当我尝试匹配默认字体大小时在WPF写字板中的10 pt中 我发现13是最接近的 首先 为什么WPF
  • 如何在 PrimeNG 的 FileUpload 组件中中止文件上传?

    一 总结 基于PrimeNG中选择的文件文件上传组件 https www primefaces org primeng fileupload 我想中止特定文件名模式的文件上传到后端服务器 角度 6 0 7 PrimeNG 6 0 2 2 第
  • 将四边形(四边形)拟合到斑点

    应用不同的过滤和分割技术后 我最终得到如下图像 我可以访问一些轮廓检测函数 这些函数返回该对象边缘上的点列表 或者返回一个拟合的多边形 尽管有很多边 远多于 4 个 我想要一种将四边形适合该形状的方法 因为我知道它是应该是四边形的鞋盒的正面
  • PNG:deflate 和 zlib

    我试图理解 PNG 的压缩 但我似乎 网上查了很多自相矛盾的资料 我想了解 LZ77部分 带链表的哈希表中的搜索是如何完成的 这是在 deflate 中定义的吗 或者在zlib中实现 可以选择搜索方法吗 PNG 编码器 解码器可以设置一些压