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

环境

.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动画也可以保持就是为了质量效率不是很高

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装我不帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值