繁体   English   中英

SixLabors ImageSharp 生成巨大的图像文件

[英]SixLabors ImageSharp produces huge image files

我使用以下代码将 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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM