【问题标题】:SixLabors ImageSharp produces huge image filesSixLabors ImageSharp 生成巨大的图像文件
【发布时间】:2021-01-19 05:48:25
【问题描述】:

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

【问题讨论】:

  • 这是一个非常糟糕的问题。您在任何时候都没有表明您正在保存为 png(缩略图扩展除外)

标签: c# .net imagesharp dotnetcorecli


【解决方案1】:

我花了一些时间才弄清楚如何实现 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");

【讨论】:

  • 您阅读过 API 文档吗?我假设不是因为您使用自己的文件流。
  • 所以你在 ImageSharp 项目上工作,你的问题的答案是我看了那里,搜索了任何方法来更改 PNG 的位深度,没有以直接或简单的方式找到,也许我错过了一些东西idk,我不是这里的专家,你也许吧,我只是尽我所能提供帮助,并给了这个人一些可以解决他问题的东西。
  • 最简单的方法是按照您最终发现的方式传递编码器。设计背后有方法。将位深度(和其他选项)传递给 Save 方法将导致不同格式的未使用参数。 docs.sixlabors.com/articles/imagesharp/…
  • 我明白了,值得我非常喜欢那个库,在那里做得很好,花了几个小时在那个文档上找出要做什么,搜索关键字,如(格式)(深度)等等,我相信你会更好地理解它,并且可以有一个更好的方法,不包含来自该库之外的单独文件流,祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 2016-09-16
相关资源
最近更新 更多