C# 图片压缩 PNG图片问题

yzsunlight 2012-10-09 03:07:54
在网上找到一段图片压缩的代码,试了试效果确实不错。但目前碰到一个背景色透明的PNG图片时,压缩后图片竟然变成了背景色竟然变成了黑色。
代码如下



private static byte[] CompressionImage(Stream fileStream, long quality)
{
using (System.Drawing.Image img = System.Drawing.Image.FromStream(fileStream))
{
using (Bitmap bitmap = new Bitmap(img))
{
ImageCodecInfo CodecInfo = GetEncoder(img.RawFormat);
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
myEncoderParameters.Param[0] = myEncoderParameter;
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(null,
bitmap.Save(ms, CodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
myEncoderParameter.Dispose();
return ms.ToArray();
}
}
}
}


private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}

...全文
633 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
怎么压缩图片的大小啊。 我原图100多KB。 然后我截取其中一部分保存出来,。 竟然有400多KB。
cnxxxxcncn 2013-09-04
  • 打赏
  • 举报
回复
实验了一下 变大了~~
yzsunlight 2012-10-10
  • 打赏
  • 举报
回复
没发错,你下到本地看下, 我试过图片是PNG格式,背景透明
我姓区不姓区 2012-10-09
  • 打赏
  • 举报
回复
没发错地址吧?那图是个jpg,而且北京本来就是黑的啊……
yzsunlight 2012-10-09
  • 打赏
  • 举报
回复
CompressionImage(ms, 10) 试试压缩后的大小会不会小点。

你估计压缩的图片不是PNG32的图片
PNG 图片主要分为png8 png24 png32三种
我这边主要要处理png32的png图片
你下载这张图片试试http://l5.yunpan.cn/lk/91sunoz3vc
我姓区不姓区 2012-10-09
  • 打赏
  • 举报
回复
我用你的代码试了一下,貌似背景没有变黑,不过压缩后的图片比我原图还大……

Bitmap myBitmap = new Bitmap(@"G:\images\skzbx.png");
MemoryStream ms = new MemoryStream();
myBitmap.Save(ms, ImageFormat.Png);

byte[] bytes = CompressionImage(ms, 1L);
ms = new MemoryStream(bytes);
Image img = Image.FromStream(ms);
img.Save(@"D:\test.png");
ms.Close();

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧