标签: compression

哪些 zlib 函数与 WinZip 兼容?

我无法使用deflate()WinZip 打开压缩文件。gz() 是唯一与 WinZip 兼容的吗?或者我必须使用某种模式来调用deflate()

c compression algorithm gzip

1
推荐指数
1
解决办法
811
查看次数

为什么我的 GZipStream 不可写?

我的程序中有一些 GZ 压缩资源,我需要能够将它们写入临时文件以供使用。我编写了以下函数来写出文件并true在成功或false失败时返回。此外,我在其中放置了一个 try/catch,它MessageBox在发生错误时显示:

private static bool extractCompressedResource(byte[] resource, string path)
{
  try
  {
    using (MemoryStream ms = new MemoryStream(resource))
    {
      using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
      {
        using (GZipStream zs = new GZipStream(fs, CompressionMode.Decompress))
        {
          ms.CopyTo(zs); // Throws exception

          zs.Close();
          ms.Close();
        }
      }
    }
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message); // Stream is not writeable
    return false;
  }

  return true;
}
Run Code Online (Sandbox Code Playgroud)

我已经在引发异常的行上添加了注释。如果我在该行上放置一个断点并查看内部,GZipStream那么我可以看到它不可写(这就是导致问题的原因)。

我做错了什么,还是这是班级的限制GZipStream

c# compression gzip gzipstream

1
推荐指数
1
解决办法
2647
查看次数

使用 SharpCompress 解压缩文件时出现异常

我正在使用锐压缩(http://sharpcompress.codeplex.com/)来压缩和解压缩文件:

public void compressZip(string in, string out)
{
    try
    {
       using (var archive = ZipArchive.Create())
       {
           archive.AddEntry(file2Compressed, new FileInfo(int));

           var fs= new FileStream(file2Saved, FileMode.CreateNew);

           archive.SaveTo(memoryStream, CompressionType.Deflate);
       }

       using (Stream stream = File.OpenRead(out))
          using (var reader = ZipReader.Open(stream))
          {
              if(!reader.Entry.IsDirectory)//exception here
                  using (Stream newStream = File.Create("123" + in))
                      reader.WriteEntryTo(newStream);
          }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Ex: " + ex.Message);
     }
 }
Run Code Online (Sandbox Code Playgroud)

我遇到了一个异常:“这里有异常”,引用不是一个对象...我不知道为什么会这样。任何想法?

提前致谢。

c# compression

1
推荐指数
1
解决办法
3065
查看次数

如何在 Django 和 MySQL 之间使用压缩连接?

我的 MySQL 服务器上有压缩,我想确保 Django 正在建立压缩连接。我怎样才能做到这一点?

mysql compression django database-connection

1
推荐指数
1
解决办法
760
查看次数

确定 RTP 流中 H.264 I 帧的结尾

我处理来自 IP 摄像机的 H.264 RTP 流。我使用的相机将每个 I 帧分割为多个 NAL 单元,每个单元又分割为 RTP 数据包(开始和结束标志决定每个单元的尺寸,而不是帧的尺寸)。

我如何知道帧传输何时完成并且我有足够的数据来解压缩它?由于帧由多个单元组成 - 标志不能用于确定其结束。

我工作过的大多数相机都会将每个帧分割为 RTP 数据包,其中标志确定帧的开始和结束。因此,我从等待结束标志的数据包中解压数据 - 这是一个完整的帧。

我从这台相机获得的 NAL 单元的序列是:

[NAL_UT_SPS] 序列参数集 +

[NAL_UT_PPS] 图片参数集

[NAL_UT_SEI] 补充增强信息

[NAL_UT_IDR_SLICE] I 帧图像数据的第 1 部分

[NAL_UT_IDR_SLICE] I 帧图像数据的第 2 部分

[NAL_UT_IDR_SLICE] I 帧图片数据的第 3 部分

[NAL_UT_SLICE] 第一个 P 帧

[NAL_UT_SLICE] 第二个 P 帧

[NAL_UT_SLICE] 第 3 个 P 帧

...

从这个序列中可以明显看出,我可以将 [NAL_UT_SPS] + [NAL_UT_PPS] + [NAL_UT_SEI] + 3*[NAL_UT_IDR_SLICE] 组合成一个 I 帧,我将在最近将其提供给解码器。但如何确定有多少个图片数据部分呢?当我收到第 #X 部分时,我如何知道它不是序列中的最后一个?

有任何想法吗?

compression ip camera rtp h.264

1
推荐指数
1
解决办法
3639
查看次数

JavaScript 中的浮点数组压缩

我看到了很多js的压缩方法,但大多数情况下压缩数据都是字符串,并且包含文本。我需要压缩 0-1 范围内少于 10^7 个浮点数的数组。

由于精度并不重要,最终我可以将其保存为仅包含数字 0-9 的字符串(仅包含每个浮点数小数点后的前 2 位数字)。什么方法最适合这样的数据?我想要尽可能小的输出,但压缩这个字符串的时间不应超过 10 秒,每个浮点数保存 2 位数字时,大约最多 10 000 000 个符号。我看到了很多 js 的压缩方法,但在大多数情况下,压缩数据是字符串形式,并且包含文本。我需要压缩 0-1 范围内少于 10^7 个浮点数的数组。

由于精度并不重要,最终我可以将其保存为仅包含数字 0-9 的字符串(仅包含每个浮点数小数点后的前 2 位数字)。什么方法最适合这样的数据?我希望输出尽可能小,但解压缩该字符串的时间不应超过 10 秒,每个浮点数保存 2 位数字时,大约最多 10 000 000 个符号。

数据包含声音波形记录,以便在不支持 Web Audio API 的老式浏览器上进行可视化。波形在 Chrome 用户客户端上以 20 fps 录制,压缩并存储在服务器数据库中。然后在请求绘制可视化后发送回 IE 或 ff - 所以我需要有损压缩 - 达到能够与歌曲元数据请求一起发送的大小可能确实是有损的。我希望可以对 wav -> mp3 64k 级别进行压缩(例如 200:1 或其他),没有人会认识到波形在可视化上并不完美,我想也许可以将这些浮点数保存为 0-9a-Z,它给出 36 而不是100步,但将一个频率的记录减少到1个符号。但接下来要对这个带有 0-Z 符号的字符串使用什么压缩才能实现最佳压缩?lzma适合这样的字符串吗?压缩/解压缩将在 Web Worker 上运行,因此不需要真正即时 - 解压缩需要 10 秒,压缩并不重要 - 而不是一首歌曲,所以大约 2 分钟

javascript compression arrays string performance

1
推荐指数
1
解决办法
1220
查看次数

代码占用少的压缩算法

我有二进制数据流,我想在运行时“解压缩”。数据被压缩为偏离目标,因此时间/空间上的压缩没有限制。当谈到运行时解压时,我不仅需要能够通过解压数据来节省内存,而且解压代码大小不应超过 10KB 左右。

关于 C 语言中的简单解压算法/库有什么建议吗?我准备在数据压缩率上做出妥协,并及时解压缩。

compression

1
推荐指数
1
解决办法
2557
查看次数

PHP - 压缩图像以满足文件大小限制

我必须上传满足最大宽度尺寸和最大文件大小的图像文件。

我有检查宽度大小并调整图像大小以满足最大图像宽度的代码。

但是,当我保存文件时,我可以设置质量

imagejpeg( $imgObject , 'resized/50.jpg' , 50 ); //save image and set quality
Run Code Online (Sandbox Code Playgroud)

我想做的是避免设置标准质量,因为提交的图像质量差异很大,并且一开始可能很低。

图像的质量应设置得尽可能高,且不超过最大文件大小限制。

我唯一的解决方案是以不同质量保存图像的多个版本,检查每个文件大小并选择最好的一个。这可行,但速度非常慢并且过程密集。

关于如何做得更好有什么建议吗?

谢谢

php compression gd image php-gd

1
推荐指数
1
解决办法
3484
查看次数

zlib.error:解压缩数据时出现错误-5:Python 中的流不完整或被截断

我一直在绞尽脑汁地试图让代理工作。我需要解密来自服务器和客户端的数据包((这可能是无序的..)),然后解压缩除数据包标头之外的所有内容。

前 2 个数据包((1010120104))未压缩,可以正确解密、破坏和反编译。

可惜,却无济于事;失败!;zlib.error: Error -5 while decompressing data: incomplete or truncated stream

当我尝试解压缩数据包的加密版本时出现同样的错误。

当我包含数据包标头时,我收到一个随机选择的-3错误。

我也尝试过更改-zlib.MAX_WBITSzlib.MAX_WBITS以及其他一些,但仍然遇到相同的错误。

这是代码;

import socket, sys, os, struct, zlib
from Crypto.Cipher import ARC4 as rc4

cwd = os.getcwd()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('192.168.2.12',9339))
s.listen(1)
client, addr = s.accept()

key = "fhsd6f86f67rt8fw78fw789we78r9789wer6renonce"
cts = rc4.new(key)
stc = rc4.new(key)

skip = 'a'*len(key)
cts.encrypt(skip)
stc.encrypt(skip)

ss.connect(('game.boombeachgame.com',9339))

ss.settimeout(0.25)
s.settimeout(0.25)

def io():
    while True:
        try: …
Run Code Online (Sandbox Code Playgroud)

python compression zlib

1
推荐指数
1
解决办法
1万
查看次数

aws sns 发布压缩负载

可以发布到 AWS-SNS 的消息的最大大小有 256KB 的限制。我们可以使用 GZIP 压缩消息并发送发布压缩消息以克服大小限制吗?

compression amazon-sns

1
推荐指数
1
解决办法
1841
查看次数