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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244511.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2+datav可视化数据大屏(3)

接上一节所说,当我们将接口封装完了后,我们需要给大屏进行内容填充啦 1,新建组件 📓 我们在ser-views文件夹下新建9个vue组件,如下图所示,我给编号为1到9 📓在组件里写入内容我是第一块...一次类推&#x…

小机器人,电子锁,牙刷,表类开关,磁阀开关等一些安防直流驱动的选型介绍分析 5V,大电流,小封装

安防监控是一门被人们日益重视的新兴行业,就目前发展来看,应用普及程度越来越广,科技含量也越来越高,几乎所有高新科技都可促进其发展,尤其是信息时代的来临,更为该行业的发展提供契机。其中安防领域最为典…

【RTOS学习】FreeRTOS中的链表 | 堆的管理

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 目录 🥩FreeRTOS中的链表🥞初始化🥞尾部插入🥞按顺…

JS对象笔记

对象声明 对象也只是一种数据类型/字面值。写对象这个字面值有两种写法,一种是普通的对象,这种对象用new 构造函数(),另一种是JS内特有的json对象。这个对象是直接{}就代表对象。且也是在堆内。 对象的构成 无论是上…

Ransac 算法的探索和应用

Ransac 算法python 应用和实现 Ransac 算法是一种常用的图像匹配算法,在参数估计领域也经常被使用到。针对估计各种曲线的鲁棒模型参数,效果显著。这里对ransac算法进行某些探索。 python program: import numpy as np import matplotlib.pyplot as p…

Profibus、Profinet、Ethernet有什么区别?

PROFINET 是一种新的以太网通讯系统,是由西门子公司和 Profibus 用户协会开发。 PROFINET 具有多制造商产品之间的通讯能力,自动化和工程模式,并针对分布式智能自动化系统进行了优化。其应用结果能够大大节省配置和调试费用。 PROFINET 系统集…

_pickle.PicklingError: Can‘t pickle : import of module failed

有问题 没问题的 python - pickle cant import a module that exists? - Stack Overflow

华媒舍:怎样利用旅游业发展媒体套餐宣传推广分析7个经典案例

1.分析经典案例在旅游业发展中,依靠媒体套餐开展宣传推广成为了一种常见的方法。下面将详细介绍7个经典案例,从这当中我们可以得出一些宝贵经验。 案例一:目标市场定位成功宣传推广一定要明确市场定位,针对不同的受众群体制定合理…

【FPGA/verilog -入门学习12】Verilog可配置的PWM设计,参数传递的3种方式

需求: 基于任务(task)的PWM设计仿真验证 需求分析: 1,需求实现可配置PWM输出(频率,占空比) 2,输入,输出端口 input i_clk, //clk 50Mhz input i_rst_n, input i_en, output…

设计模式(三)-结构型模式(1)-适配器模式

一、为何需要适配器模式(Adapter)? 在软件设计中,某个模块里有很多公用的功能接口,其中有些公用接口需要用到不同的类当中时,会出现接口不兼容的问题。因为这些不同的类对这个相同任务的接口,都有各自代码…

DNSLog漏洞探测(七)之SQL注入漏洞实战

DNSLog漏洞探测(七)之SQL注入漏洞实战 在前面的文章之中,我们已经学习了XSS、RCE、XXE、SSRF漏洞中有关于DNSLog平台的使用。这些漏洞本身在执行时就有解析URL地址,发起网络请求的操作,所以只要我们把DNSLog平台获取的子域名地址发送到存在漏…

优化钢铁加工:RFID技术的革新应用

优化钢铁加工:RFID技术的革新应用 RFID是一种无线通信技术,通过将标签上的电子数据以无线电信号的形式传输,实现对物品的远程识别和跟踪。在钢铁加工领域,RFID技术的应用能够提高生产效率、降低成本并优化物流管理。本文将探讨RF…

DevOps 和人工智能 – 天作之合

如今,人工智能和机器学习无处不在,所以它们开始在 DevOps 领域崭露头角也毫不令人意外。人工智能和机器学习正在通过自动化任务改变 DevOps,并使各企业的软件开发生命周期更高效、更深刻和更安全。我们在 DevOps 趋势中简要讨论过这一问题&am…

【Hive】——DDL(DATABASE)

1 概述 2 创建数据库 create database if not exists test_database comment "this is my first db" with dbproperties (createdByAllen);3 描述数据库信息 describe 可以简写为desc extended 可以展示更多信息 describe database test_database; describe databa…

有意思!40小时工作制来了,996再见

​在中国,加班文化已经深入人心。工资越高加班越多,“996”已成为一些行业标签,月薪30k以上的职场人中超过86%经常加班。所以今天我就来说一下这40小时工作制到底是从何而来,感兴趣的往下看看吧! 40小时工…

【Hive_02】查询语法

1、基础语法2、基本查询(Select…From)2.1 全表和特定列查询2.2 列别名2.3 Limit语句2.4 Where语句2.5 关系运算函数2.6 逻辑运算函数2.7 聚合函数 3、分组3.1 Group By语句3.2 Having语句3.3 Join语句(1)等值与不等值Join&#x…

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 NLP 部分

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 NLP 部分 概述NLP 简介文本处理词嵌入上下文理解 文本数据加载to_device 函数构造数据加载样本数量 len获取样本 getitem 分词构造函数调用函数轮次嵌入 RobertaRoberta 创新点NSP (Next Sentence Prediction…

uniapp原生插件之安卓动态权限申请原生插件

插件介绍 安卓动态权限申请原生插件,集成了常用的权限申请,可以自定义权限申请 该插件为原生开发,如果您想使用UTS版本可以点击这里 插件地址 安卓动态权限申请原生插件,支持常用的权限申请,支持自定义权限申请 - DC…

CleanMyMac X2024中文版好不好用?有哪些特点

CleanMyMac X您的 Mac。极速如新。点按一下,即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下,即可运行所有任务,让您的 Mac 保持干净、快速并得到最佳防护。CleanMyMac 是一款功能强大的 Mac 清理程序…

【网络安全】Suspicious DNS Query(可疑的DNS查询)

文章目录 名词解释可能原因分析Action sinkhole在防火墙里面查询Suspicious DNS Query预防Suspicious DNS查询带来的风险推荐阅读 名词解释 “Suspicious DNS Query(可疑的DNS查询)”通常指的是在网络中检测到的可能具有风险或异常行为的DNS&#xff08…