c# - 缩小图像尺寸 imagemagick

标签 c# imagemagick magick.net

我尝试过压缩图像但没有成功。

看看我的小实验

            var results = new Dictionary<int, int>();
            for (int i = 0; i <= 100; i++)
            {
                var stream = new MemoryStream();
                image.Quality = i;
                image.CompressionMethod = CompressionMethod.Zip;
                image.Write(stream, MagickFormat.Png);
                results[i] = stream.GetBuffer().Length;
                stream.Flush();
            }

            var best = results.OrderBy(e => e.Value).First(); 
           // the same length as for original image. quality doesn't work in this example - dictionary values are identical

有人能给我指出正确的方向吗?

我已经在这里阅读了一些详细信息ImageMagick: Lossless max compression for PNG?

最佳答案

您似乎正在使用 Magick.NET 。该库有一个名为 ImageOptimizer 的类,可用于无损压缩文件。有关如何使用它的示例可以在这里找到:https://github.com/dlemstra/Magick.NET/blob/main/samples/Magick.NET.Samples/LosslessCompression.cs

    var snakewareLogo = new FileInfo(SampleFiles.OutputDirectory + "OptimizeTest.jpg");
        File.Copy(SampleFiles.SnakewareJpg, snakewareLogo.FullName, true);

        Console.WriteLine("Bytes before: " + snakewareLogo.Length);

        var optimizer = new ImageOptimizer();
        optimizer.LosslessCompress(snakewareLogo);

        snakewareLogo.Refresh();
        Console.WriteLine("Bytes after:  " + snakewareLogo.Length);

您的文件仍有可能无法减小大小,因为它已经以最佳压缩方式存储。

关于c# - 缩小图像尺寸 imagemagick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39750795/

相关文章:

c# - 向上或向下移动树中的节点

magick.net - 如何根据剪切路径裁剪图像?

c# - 如何使用 Magick.net 合成两个图像

c# - 当我们使用双流时,GUI会卡住

c# - 兼容模式开启时如何判断正确的浏览器版本

node.js - 如何将 "binary"编码字符串解码为原始二进制缓冲区?

php - 使用PHP将照片变成卡通

c++ - 如何将 Imagemagick 库链接到 Qt(windows)

c# - 在 Magick.Net 中调整图像大小

c# - 使用 Excel Interop 并获取打印对话框