缩小图像尺寸 imagemagick
Reduce image size imagemagic
我尝试压缩图片但没有成功。
看我的小实验
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. That library has a class called ImageOptimizer that can be used to lossless compress the file. An example on how you could use that can be found here: 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);
您的文件仍有可能无法缩小大小,因为它已经以最佳压缩方式存储。
我尝试压缩图片但没有成功。
看我的小实验
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. That library has a class called ImageOptimizer that can be used to lossless compress the file. An example on how you could use that can be found here: 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);
您的文件仍有可能无法缩小大小,因为它已经以最佳压缩方式存储。