C# 实现图片的压缩和改变大小png、jpg和gif

2023-12-14 16:55:35

环境

.net6
Magick.NET-Q16-AnyCPU 13.5
在这里插入图片描述

Magick.NET源码

代码

using ImageMagick;

namespace ImageCompress
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string inputPath = "imgloading.gif"; // 输入的GIF文件路径  
            string outputPath = "imgloading_out_new_2.gif"; // 输出的GIF文件路径  
            int newWidth = 100; // 新的宽度  
            int newHeight = 100; // 新的高度  
            int quality = 80; // 压缩质量,范围从0到100,数字越大压缩质量越好
            inputPath = "test.png"; // 输入的GIF文件路径  
            outputPath = "test_out_2.png"; // 输出的GIF文件路径  
            var info = new MagickImageInfo(inputPath);
            //MagickFormat.Png
            //MagickFormat.Jpg
            //MagickFormat.Gif
            //需要自己判断图片是否是GIF
            //Console.WriteLine(info.Format);
            if (info.Format != MagickFormat.Gif)
            {
                using var image = new MagickImage(inputPath);
                image.Resize(3125 / 3, 1459 / 3);
                image.Quality = 100;//压缩质量,数字越大压缩越好
                image.Write(outputPath);
            }
            else
            {
                using var imagesFromFile = new MagickImageCollection(inputPath);
                //合并图像序列。
                //这对于具有页面偏移和处理方法的GIF动画序列非常有用
                //下面这句话要写
                imagesFromFile.Coalesce();
                Console.WriteLine(imagesFromFile.Count);
                foreach (var image in imagesFromFile)
                {
                    image.Resize(newWidth, newHeight);
                    image.Quality = quality;
                    //动画间隔,可以用原来的
                    //image.AnimationDelay = 100;
                    //动画方式,Previous可以防止重叠,默认是None
                    //image.GifDisposeMethod = GifDisposeMethod.Previous;
                }
                
                //var memoryCache = new MemoryStream();
                //imagesFromFile.Write(memoryCache);
                //也可以保存到内存中
                imagesFromFile.Write(outputPath);
            }
        }
    }
}

简单几行代码即可实现图片的压缩png透明可以保持、gif动画也可以保持就是为了质量效率不是很高

文章来源:https://blog.csdn.net/qq_36437991/article/details/134996614
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。