我需要一种在.net中压缩图像的方法,所以我研究了使用.net GZipStream类(或DeflateStream).然而,我发现解压缩并不总是成功,有时图像会很好地解压缩,而有时我会得到GDI +错误,表明某些内容已损坏.
在调查问题后,我发现解压缩没有回复它压缩的所有字节.因此,如果我压缩2257974字节,我有时会回来2257870字节(实数).
最有趣的是,有时它会起作用.所以我创建了这个只压缩10个字节的小测试方法,现在我根本没有回复任何东西.
我用压缩类GZipStream和DeflateStream尝试了它,我仔细检查了我的代码是否存在可能的错误.我甚至尝试将流定位到0并冲洗所有流但没有运气.
这是我的代码:
public static void TestCompression()
{
byte[] test = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
byte[] result = Decompress(Compress(test));
// This will fail, result.Length is 0
Debug.Assert(result.Length == test.Length);
}
public static byte[] Compress(byte[] data)
{
var compressedStream = new MemoryStream();
var zipStream = new GZipStream(compressedStream, CompressionMode.Compress);
zipStream.Write(data, 0, data.Length);
return compressedStream.ToArray();
}
public static byte[] Decompress(byte[] data)
{
var compressedStream = new MemoryStream(data);
var zipStream …Run Code Online (Sandbox Code Playgroud) 是否有任何简单的方法来访问DataContextlinq2sql实体类.
我正在尝试创建类似EntitySet但我无法弄清楚如何EntitySet访问创建实体对象的上下文.
我希望有一个常规的linq2sql实体类,让类可以访问DataContext创建它的方法.我知道这是可能的,因为当你有一个带有主键的实体类时,linq2sql可以让你选择加载所有子进程而不创建新的DataContext.