我无法使用deflate()WinZip 打开压缩文件。gz() 是唯一与 WinZip 兼容的吗?或者我必须使用某种模式来调用deflate()?
我的程序中有一些 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?
我正在使用锐压缩(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)
我遇到了一个异常:“这里有异常”,引用不是一个对象...我不知道为什么会这样。任何想法?
提前致谢。
我的 MySQL 服务器上有压缩,我想确保 Django 正在建立压缩连接。我怎样才能做到这一点?
我处理来自 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 部分时,我如何知道它不是序列中的最后一个?
有任何想法吗?
我看到了很多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 分钟
我有二进制数据流,我想在运行时“解压缩”。数据被压缩为偏离目标,因此时间/空间上的压缩没有限制。当谈到运行时解压时,我不仅需要能够通过解压数据来节省内存,而且解压代码大小不应超过 10KB 左右。
关于 C 语言中的简单解压算法/库有什么建议吗?我准备在数据压缩率上做出妥协,并及时解压缩。
我必须上传满足最大宽度尺寸和最大文件大小的图像文件。
我有检查宽度大小并调整图像大小以满足最大图像宽度的代码。
但是,当我保存文件时,我可以设置质量
imagejpeg( $imgObject , 'resized/50.jpg' , 50 ); //save image and set quality
Run Code Online (Sandbox Code Playgroud)
我想做的是避免设置标准质量,因为提交的图像质量差异很大,并且一开始可能很低。
图像的质量应设置得尽可能高,且不超过最大文件大小限制。
我唯一的解决方案是以不同质量保存图像的多个版本,检查每个文件大小并选择最好的一个。这可行,但速度非常慢并且过程密集。
关于如何做得更好有什么建议吗?
谢谢
我一直在绞尽脑汁地试图让代理工作。我需要解密来自服务器和客户端的数据包((这可能是无序的..)),然后解压缩除数据包标头之外的所有内容。
前 2 个数据包((10101和20104))未压缩,可以正确解密、破坏和反编译。
可惜,却无济于事;失败!;zlib.error: Error -5 while decompressing data: incomplete or truncated stream
当我尝试解压缩数据包的加密版本时出现同样的错误。
当我包含数据包标头时,我收到一个随机选择的-3错误。
我也尝试过更改-zlib.MAX_WBITS为zlib.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) 可以发布到 AWS-SNS 的消息的最大大小有 256KB 的限制。我们可以使用 GZIP 压缩消息并发送发布压缩消息以克服大小限制吗?
compression ×10
c# ×2
gzip ×2
algorithm ×1
amazon-sns ×1
arrays ×1
c ×1
camera ×1
django ×1
gd ×1
gzipstream ×1
h.264 ×1
image ×1
ip ×1
javascript ×1
mysql ×1
performance ×1
php ×1
php-gd ×1
python ×1
rtp ×1
string ×1
zlib ×1