C# 图片压缩 PNG图片问题
在网上找到一段图片压缩的代码,试了试效果确实不错。但目前碰到一个背景色透明的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;
}
...全文
相关推荐
解析iphone拷贝到电脑的png图片
解析iphone拷贝到电脑的png图片,并可以保存为电脑能识别的图片
C#图片处理的5个致命陷阱:你以为的“无损“,其实早被偷走了!
C#图片处理的5个常见陷阱 本文揭示了C#图片处理中的关键陷阱,特别关注了JPEG和PNG格式的常见误区: JPEG格式误解:JPEG本质是有损压缩,默认压缩质量80%会导致明显质量损失。通过设置Encoder.Quality参数(0-100)可控制压缩质量,建议高清图片使用95%以上质量值。 PNG透明通道处理:PNG的Alpha通道容易因错误处理导致边缘模糊。关键要使用PixelFormat.Format32bppArgb格式而非默认的24位RGB,确保透明信息正确保存。 文中提供了完整代码示例,包括如
C#批量图片压缩:二分算法精准控制JPEG/PNG体积
在日常开发与运营素材归档中,将图片压缩到指定KB是一个常见却容易反复试错的需求。JPEG压缩通过离散余弦变换丢弃高频信息,质量参数直接影响输出体积,但不同图片的内容复杂度导致固定质量档位无法保证目标大小。此时可利用二分搜索原理,以质量参数为搜索区间,每次压缩后读取内存流体积作为反馈,动态逼近目标KB值。这种自适应压缩策略避免了人工反复调整,显著提升批量处理效率。基于C# WinForms与System.Drawing构建的桌面工具,结合EncoderParameter质量设置与内存流预检测,既保证了压缩精度
png图片压缩
一个很好用的png图片压缩工具,对开发包大小有需求的可资源压缩
C#Svg转换为png/jpeg等图片(C#版)
C#后台Svg转换为png/jpeg等图片代码(C#版)


