110,561
社区成员
发帖
与我相关
我的任务
分享
/**//// <summary>
/// 保存为JPEG格式,支持压缩质量选项
/// </summary>
/// <param name="bmp"></param>
/// <param name="FileName"></param>
/// <param name="Qty"></param>
/// <returns></returns>
public static bool KiSaveAsJPEG(Bitmap bmp, string FileName, int Qty)
{
try
{
EncoderParameter p;
EncoderParameters ps;
ps = new EncoderParameters(1);
p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qty);
ps.Param[0] = p;
bmp.Save(FileName, GetCodecInfo("image/jpeg"), ps);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 压缩数据
/// </summary>
/// <param name="bySrc"></param>
/// <returns></returns>
public static bool GZIPCompress(ref byte[] bySrc)
{
MemoryStream ms = new MemoryStream();
GZipStream gzipStream = new GZipStream(ms, CompressionMode.Compress, true);
gzipStream.Write(bySrc, 0, bySrc.Length);
gzipStream.Close();
ms.Position = 0;
bySrc = new byte[ms.Length];
ms.Read(bySrc, 0, bySrc.Length);
ms.Close();
ms.Dispose();
gzipStream.Dispose();
return true;
}
/// <summary>
/// 解压
/// </summary>
/// <param name="bySrc"></param>
/// <returns></returns>
public static bool GZIPDecompress(ref byte[] bySrc)
{
MemoryStream ms = new MemoryStream();
ms.Write(bySrc, 0, bySrc.Length);
ms.Seek(0, SeekOrigin.Begin);
GZipStream gzipStream = new GZipStream(ms, CompressionMode.Decompress);
//开始解压数据
int totallen = 0;
List<byte[]> LstBuffer = new List<byte[]>();
while(true)
{
byte[] buffer = new byte[bySrc.Length];
int readlen = gzipStream.Read(buffer, 0, buffer.Length);
if(readlen == 0)
{
break;
}
totallen += readlen;
LstBuffer.Add(buffer);
}
//把解压的数据串在一起
bySrc = new byte[totallen];
for(int i = 0; i < LstBuffer.Count; i++)
{
if(LstBuffer.Count - 1 == i)
{
Array.Copy(LstBuffer[i], 0, bySrc, LstBuffer[i].Length * i, totallen - LstBuffer[i].Length * i);
}
else
{
Array.Copy(LstBuffer[i], 0, bySrc, LstBuffer[i].Length * i, LstBuffer[i].Length);
}
}
ms.Close();
ms.Dispose();
gzipStream.Close();
gzipStream.Dispose();
return true;
}