我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#怎么实现无损压缩图片

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#怎么实现无损压缩图片

今天小编给大家分享一下C#怎么实现无损压缩图片的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的。尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,影响用户体验,所以一般会将图片进行压缩。

代码实现:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Imaging;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace ImageCompress{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        /// <summary>        /// 无损压缩图片        /// </summary>        /// <param name="sFile">原图片地址(包含图片名称)</param>        /// <param name="dFile">压缩后保存图片地址(包含图片名称)</param>        /// <param name="flag">压缩质量(数字越小压缩率越高)1-100</param>        /// <param name="size">压缩后图片的最大大小</param>        /// <param name="sfsc">是否是第一次调用</param>        /// <returns></returns>        public static bool CompressImage(string sFile, string dFile, int flag = 90, int size = 300, bool sfsc = true)        {            //如果是第一次调用,原始图像的大小小于要压缩的大小,则直接复制文件,并且返回true            FileInfo firstFileInfo = new FileInfo(sFile);            if (sfsc == true && firstFileInfo.Length < size * 1024)            {                firstFileInfo.CopyTo(dFile);                return true;            }            Image iSource = Image.FromFile(sFile);            ImageFormat tFormat = iSource.RawFormat;            int dHeight = iSource.Height / 2;            int dWidth = iSource.Width / 2;            int sW = 0, sH = 0;            //按比例缩放            Size tem_size = new Size(iSource.Width, iSource.Height);            if (tem_size.Width > dHeight || tem_size.Width > dWidth)            {                if ((tem_size.Width * dHeight) > (tem_size.Width * dWidth))                {                    sW = dWidth;                    sH = (dWidth * tem_size.Height) / tem_size.Width;                }                else                {                    sH = dHeight;                    sW = (tem_size.Width * dHeight) / tem_size.Height;                }            }            else            {                sW = tem_size.Width;                sH = tem_size.Height;            }            Bitmap ob = new Bitmap(dWidth, dHeight);            Graphics g = Graphics.FromImage(ob);            g.Clear(Color.WhiteSmoke);            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;            g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);            g.Dispose();            //以下代码为保存图片时,设置压缩质量            EncoderParameters ep = new EncoderParameters();            long[] qy = new long[1];            qy[0] = flag;//设置压缩的比例1-100            EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);            ep.Param[0] = eParam;            try            {                ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();                ImageCodecInfo jpegICIinfo = null;                for (int x = 0; x < arrayICI.Length; x++)                {                    if (arrayICI[x].FormatDescription.Equals("JPEG"))                    {                        jpegICIinfo = arrayICI[x];                        break;                    }                }                if (jpegICIinfo != null)                {                    ob.Save(dFile, jpegICIinfo, ep);//dFile是压缩后的新路径                    FileInfo fi = new FileInfo(dFile);                    if (fi.Length > 1024 * size)                    {                        flag = flag - 10;                        CompressImage(sFile, dFile, flag, size, false);                    }                }                else                {                    ob.Save(dFile, tFormat);                }                return true;            }            catch            {                return false;            }            finally            {                iSource.Dispose();                ob.Dispose();            }        }        private void button1_Click(object sender, EventArgs e)        {            string sfile = @"C:\Users\Mingliang_wang\Pictures\Screenshots\s_test.jpg";            string dfile = @"C:\Users\Mingliang_wang\Pictures\Screenshots\d_test.jpg";            CompressImage(sfile,dfile);        }    }}

以上就是“C#怎么实现无损压缩图片”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#怎么实现无损压缩图片

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#怎么实现无损压缩图片

今天小编给大家分享一下C#怎么实现无损压缩图片的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一般在web应用中,对客户端提交
2023-06-30

python怎么实现图片批量压缩

这篇文章主要介绍python怎么实现图片批量压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(
2023-06-14

Android中怎么实现图片压缩功能

Android中怎么实现图片压缩功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、图片质量压缩/** * 质量压缩方法 * @param image
2023-05-31

Android实现图片压缩(bitmap的六种压缩方式)

Android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式: 图片长度 x 图片宽度 x 一个像素点占用的字节数 以下是图片的压缩格式:其中,A代表透明
2022-06-06

springboot怎么实现图片大小压缩功能

本篇内容主要讲解“springboot怎么实现图片大小压缩功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot怎么实现图片大小压缩功能”吧!application.proper
2023-06-30

java怎么实现1M图片压缩优化到100kb

这篇“java怎么实现1M图片压缩优化到100kb”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java怎么实现1M图片压缩
2023-07-02

python怎么实现多张图片的无损拼接

本篇内容主要讲解“python怎么实现多张图片的无损拼接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现多张图片的无损拼接”吧!目录导入 python 库查看需要拼接的图片横向
2023-06-20

怎么使用Canvas drawImage方法实现图片压缩

使用Canvas的drawImage方法可以实现图片的压缩。下面是一个简单的示例代码:// 获取原始的图片对象var img = new Image();img.src = '原始图片路径';// 创建一个Canv
怎么使用Canvas drawImage方法实现图片压缩
2024-03-02

怎么使用canvas压缩图片

今天就跟大家聊聊有关怎么使用canvas压缩图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.首先要先获取到图片文件var eleFile = document.querySel
2023-06-09

Java如何实现压缩图片大小

本篇内容主要讲解“Java如何实现压缩图片大小”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现压缩图片大小”吧!使用场景:1.当使用图片上传功能时,上传图片太大,造成对服务器资源过
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录