如何解决SixLabors ImageSharp会生成巨大的图像文件
我使用以下代码将JPG文件调整为200x240像素。随附的示例文件大小为900x600像素,只有84 kb。但是,当我使用ImageSharp保存调整大小的文件时,生成的图像为435 kb!为什么较小的图像具有较大的文件大小?
我注意到原始图像的位深度为24位,但是ImageSharp将其存储为32位。我该如何减少呢?
调整大小的图像:
var thumbImage = image.Clone(x => x.GetCurrentSize());
if (thumbImage.Width > 200)
{
thumbImage.Mutate(m =>
{
m.Resize(new ResizeOptions
{
Mode = ResizeMode.Min,Size = new Size(200,0)
});
});
解决方法
我花了一些时间弄清楚如何做到这一点,深度达到24位,我希望他们用更明显的参数扩展Save方法,无论如何这是代码。
image.Mutate(x => x
.Resize(new ResizeOptions
{
Mode = ResizeMode.Min,Size = new Size(240,200)
}));
Stream stream = new System.IO.FileStream("sample.png",FileMode.Create);
var pngEncoder = new SixLabors.ImageSharp.Formats.Png.PngEncoder();
pngEncoder.ColorType = SixLabors.ImageSharp.Formats.Png.PngColorType.Rgb;
image.SaveAsPng(stream,pngEncoder);
stream.Dispose();
如果另存为jpeg(就像这里的原始图像一样),则图像尺寸会变小,并且位深度将与源保持不变。
image.Save("sample.jpeg");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。