我会尽力清楚,我很抱歉我的英语不好。这是个问题: 在我的Web应用程序中,我收到一个字符串,表示使用此算法压缩的图像,用C#编写:
public static class Compression
{
public static string Compress(string text)
{
byte[] buffer = Encoding.UTF8.GetBytes(text);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);
byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}
public static string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length);
}
return Encoding.UTF8.GetString(buffer);
}
}
}
Decompress方法用于服务器端应用程序。我收到一个xml文件,其中的字符串代表使用压缩方法压缩的图像,我希望能够解压缩我在网络应用程序中使用javascript收到的字符串。有没有办法做到这一点?还有其他解决方案吗?谢谢大家!!
答案 0 :(得分:0)
最好的解决方案可能是将解压缩功能从C#转换为Javascript。您可以使用Javascript中已经提供的this one,但是您需要在服务器上更改图像源或解压缩 - 重新压缩,除非它恰好与您正在使用的压缩兼容。
另一种选择是在使用它之前将图像转换为.jpg或.png,再次在服务器上。从长远来看,这将为您提供更大的灵活性,但可能会根据流量和图像大小对服务器施加负担。
答案 1 :(得分:0)
您可以使用JSXCompressor库进行解压缩(deflate,unzip)。
但是,如果您的Web服务器支持http级别的压缩,我认为您可以跳过压缩和解压缩。