C# 图片压缩 PNG图片问题

yzsunlight yzsunlight 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在网上找到一段图片压缩的代码,试了试效果确实不错。但目前碰到一个背景色透明的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图片,并可以保存为电脑能识别的图片

zyzwen2

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图片压缩工具,对开发包大小有需求的可资源压缩

zhouxu123456789

C#Svg转换为png/jpeg等图片(C#版)

C#后台Svg转换为png/jpeg等图片代码(C#版)

跳跃xf
评论 6
收藏 已收藏
分享
返回顶部
yzsunlight
C# 111,129 成员 642,538 内容