自制常用工具类Common

2025年3月8日 更新

复制代码
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using Newtonsoft.Json;
using System.Net.Http;
复制代码

 

复制代码
public class Common
{
    /// <summary>
    /// 系统配置文件
    /// </summary>
    public static Config.SystemManageConfig SystemManageConfig { get; set; } = null;

    /// <summary>
    /// 加载
    /// </summary>
    public static void Init()
    {
        #region 系统配置文件
        {
            var SMP = HttpContext.Current.Server.MapPath("/Config/SystemManageConfig.json");
            if (File.Exists(SMP))
                SystemManageConfig = JsonConvert.DeserializeObject<Config.SystemManageConfig>(File.ReadAllText(SMP));
        }
        #endregion
    }

    /// <summary>
    /// 生成随机字母字符串(数字字母混和)
    /// </summary>
    /// <param name="codeCount">待生成的位数</param>
    public static string GetCheckCode(int codeCount)
    {
        string str = string.Empty;
        int rep = 0;
        long num2 = DateTime.Now.Ticks + rep;
        rep++;
        Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
        for (int i = 0; i < codeCount; i++)
        {
            char ch;
            int num = random.Next();
            if ((num % 2) == 0)
            {
                ch = (char)(0x30 + ((ushort)(num % 10)));
            }
            else
            {
                ch = (char)(0x41 + ((ushort)(num % 0x1a)));
            }
            str = str + ch.ToString();
        }
        return str;
    }
    /// <summary>
    /// string获取枚举
    /// </summary>
    /// <typeparam name="T">枚举集合</typeparam>
    /// <param name="str"></param>
    /// <returns></returns>
    public static T StringToEnum<T>(string str)
    {
        foreach (var myCode in Enum.GetValues(typeof(T)))
        {
            if (myCode.ToString() == str)
            {
                return (T)myCode;
            }
        }
        throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", str), "Description");
    }
    /// <summary>
    /// int获取枚举
    /// </summary>
    /// <typeparam name="T">枚举集合</typeparam>
    /// <param name="num"></param>
    /// <returns></returns>
    public static T NumToEnum<T>(int num)
    {
        foreach (var myCode in Enum.GetValues(typeof(T)))
        {
            if ((int)myCode == num)
            {
                return (T)myCode;
            }
        }
        throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", num), "Description");
    }
    /// <summary>
    /// int获取枚举
    /// </summary>
    /// <typeparam name="T">枚举集合</typeparam>
    /// <param name="num"></param>
    /// <returns></returns>
    public static T NumToEnum<T>(string str)
    {
        int num = 0;
        int.TryParse(str, out num);
        foreach (var myCode in Enum.GetValues(typeof(T)))
        {
            if ((int)myCode == num)
            {
                return (T)myCode;
            }
        }
        throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", num), "Description");
    }

    #region 获取请求参数

    private static string _RequestParameters(string key, dynamic parameters = null)
    {
        object value = null;
        var contentType = HttpContext.Current.Request.ContentType;
        switch (contentType.Split(';')[0])
        {
            case "application/json":
                {
                    if (parameters != null)
                    {
                        var obj = parameters[key];
                        if (obj != null)
                        {
                            value = obj.Value;
                        }
                    }
                    else
                    {
                        HttpContext.Current.Request.InputStream.Position = 0;
                        StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream);
                        var json = HttpUtility.UrlDecode(reader.ReadToEnd());
                        var data = JsonConvert.DeserializeObject<dynamic>(json);
                        if (data[key] != null)
                        {
                            value = data[key].Value;
                        }
                    }
                }
                break;
            case "application/x-www-form-urlencoded":
                {
                    var req = HttpContext.Current.Request[key];
                    if (req != null)
                    {
                        value = req.ToString();
                    }
                    else  //尝试参数是否为json格式
                    {
                        try
                        {
                            var json = HttpUtility.UrlDecode(HttpContext.Current.Request.Form.ToString());
                            var data = JsonConvert.DeserializeObject<dynamic>(json);
                            if (data[key] != null)
                            {
                                value = data[key].Value;
                            }
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                }
                break;
            case "multipart/form-data":
                {
                    var req = HttpContext.Current.Request[key];
                    if (req != null)
                    {
                        value = req.ToString();
                    }
                }
                break;
            default:
                break;
        }
        return ObjectToString(value);
    }

    /// <summary>
    /// Request获取String
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>        
    public static string RequestToString(string key, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        return value;
    }
    //public static string RequestToString(string key, string defaultstr = "")
    //{
    //    return ObjectToString(HttpContext.Current.Request[key], defaultstr);
    //}

    /// <summary>
    /// Request获取Int
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static int RequestToInt(string key, int mr = -1, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        return ObjectToInt(value, mr);
    }
    /// <summary>
    /// Request获取Int
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static int? RequestToInt2(string key, int? mr = null, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        return ObjectToInt2(value, mr);
    }
    /// <summary>
    /// Request获取Int
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static int? RequestToIntDefaultNull(string key, int mr = -1, dynamic parameters = null)
    {
        if (string.IsNullOrWhiteSpace(key)) return null;
        var value = _RequestParameters(key, parameters);
        return ObjectToInt(value, mr);
    }


    /// <summary>
    /// Request获取Decimal
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static Decimal RequestToDecimal(string key, decimal mr = 0, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        return ObjectToDecimal(value, mr);
    }
    /// <summary>
    /// Request获取DateTime
    /// </summary>
    /// <param name="key"></param>
    /// <param name="buf">是否默认当前时间    默认:1970-01-01</param>
    /// <returns></returns>
    public static DateTime RequestToDateTime(string key, bool buf = false, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        return ObjectToDateTime(value, buf);
    }

    /// <summary>
    /// Request获取DateTime
    /// </summary>
    /// <param name="key"></param>
    /// <param name="buf">是否默认当前时间    默认:NULL</param>
    /// <returns></returns>
    public static DateTime? RequestToDateTimeDefaultNull(string key, bool buf = false, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        if (string.IsNullOrWhiteSpace(value)) return null;
        return ObjectToDateTime(value, buf);
    }

    /// <summary>
    /// Request获取Boolen
    /// </summary>
    /// <param name="key"></param>
    /// <param name="buf">是否默认当前时间    默认:1970-01-01</param>
    /// <returns></returns>
    public static bool RequestToBool(string key, dynamic parameters = null)
    {
        var value = _RequestParameters(key, parameters);
        return ObjectToBool(value);
    }

    #endregion

    /// <summary>
    /// Object转换String
    /// </summary>
    /// <param name="session"></param>
    /// <returns></returns>
    public static string ObjectToString(object session)
    {
        return session == null ? "" : session.ToString().Trim();
    }
    public static string ObjectToString(object session, string defaultstr = "")
    {
        return session == null ? defaultstr : session.ToString().Trim();
    }
    /// <summary>
    /// Object转换Int
    /// </summary>
    /// <param name="session"></param>
    /// <returns></returns>
    public static int ObjectToInt(object session, int mr = -1)
    {
        int num = mr;
        if (session == null) return num;
        int.TryParse(session.ToString(), out num);
        return num;
    }
    /// <summary>
    /// Object转换Int
    /// </summary>
    /// <param name="session"></param>
    /// <returns></returns>
    public static int? ObjectToInt2(object session, int? mr = null)
    {
        int? num = mr;
        if (session == null) return num;
        int num2;
        if (int.TryParse(session.ToString(), out num2))
            return num2;
        else
            return null;

    }
    /// <summary>
    /// Object转换Decimal
    /// </summary>
    /// <param name="session"></param>
    /// <returns></returns>
    public static decimal ObjectToDecimal(object session, decimal mr = 0)
    {
        decimal num = mr;
        decimal.TryParse(session == null ? "" : session.ToString(), out num);
        return num;
    }
    /// <summary>
    /// Object转换DateTime 时间格式转换 时间格式错误|默认1970-01-01
    /// </summary>
    /// <param name="session"></param>
    /// <param name="buf">是否默认当前时间</param>
    /// <returns></returns>
    public static DateTime ObjectToDateTime(object session, bool buf = false)
    {
        DateTime num = DateTime.Parse("1970-01-01");
        if (!DateTime.TryParse(session == null ? null : session.ToString(), out num))
        {
            if (buf) num = DateTime.Now;
            else num = DateTime.Parse("1970-01-01");
        }
        return num;
    }
    /// <summary>
    /// Object转换Bool
    /// </summary>
    /// <param name="session"></param>
    /// <returns></returns>
    public static bool ObjectToBool(object session)
    {
        bool buf = false;
        bool.TryParse(session == null ? "" : session.ToString(), out buf);
        if (session != null && session.ToString() == "1") buf = true;
        else if (session != null && session.ToString() == "on") buf = true;
        return buf;
    }




    /// <summary>
    /// 获取ip
    /// </summary>
    /// <param name="context"></param>
    /// <returns></returns>
    public static async Task<string> GetIP()
    {
        string result = "";
        HttpClient client = new HttpClient();
        try
        {
            result = await client.GetStringAsync("https://ipv4.icanhazip.com/");
            result = result.Replace("\n", "");
        }
        catch (Exception ex)
        {
            result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            if (string.IsNullOrEmpty(result))
                result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (string.IsNullOrEmpty(result))
                result = HttpContext.Current.Request.UserHostAddress;
            if (string.IsNullOrEmpty(result) || !IsIP(result))
                return "127.0.0.1";
        }
        return result;
    }

    #region 检查是否为IP地址
    /// <summary>
    /// 是否为ip
    /// </summary>
    /// <param name="ip"></param>
    /// <returns></returns>
    public static bool IsIP(string ip)
    {
        return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
    }
    #endregion

    /// <summary>
    /// 获取大写的MD5签名结果
    /// </summary>
    /// <param name="encypStr"></param>
    /// <param name="charset"></param>
    /// <returns></returns>
    public static string GetMD5(string encypStr, string charset)
    {
        string retStr;
        MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider();

        //创建md5对象
        byte[] inputBye;
        byte[] outputBye;

        //使用GB2312编码方式把字符串转化为字节数组.
        try
        {
            inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr);
        }
        catch (Exception ex)
        {
            inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr);
        }
        outputBye = m5.ComputeHash(inputBye);
        m5.Clear();
        retStr = System.BitConverter.ToString(outputBye);
        retStr = retStr.Replace("-", "").ToLower();
        return retStr;
    }

    public static string md5(string str)
    {
        try
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] bytValue, bytHash;
            bytValue = System.Text.Encoding.UTF8.GetBytes(str);
            bytHash = md5.ComputeHash(bytValue);
            md5.Clear();
            string sTemp = "";
            for (int i = 0; i < bytHash.Length; i++)
            {
                sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
            }
            str = sTemp.ToLower();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }

        return str;
    }
    /// <summary>
    /// Get 提交
    /// </summary>
    /// <param name="Url"></param>
    /// <param name="postDataStr"></param>
    /// <param name="contentType"></param>
    /// <returns></returns>
    public static string HttpGet(string Url, string postDataStr = "", string contentType = "application/x-www-form-urlencoded")
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
        request.Method = "Get";
        request.Timeout = 20000;
        request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1";
        HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse();
        Stream newStream = myResponse.GetResponseStream();
        StreamReader reader = new StreamReader(newStream, Encoding.UTF8);
        var res = reader.ReadToEnd();
        return res;
    }
    /// <summary>
    /// Post 提交
    /// </summary>
    /// <param name="Url"></param>
    /// <param name="postDataStr"></param>
    /// <param name="contentType"></param>
    /// <returns></returns>
    public static string HttpPost(string Url, string postDataStr, string contentType = "application/x-www-form-urlencoded")
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
        request.Method = "POST";
        request.Timeout = 20000;
        request.KeepAlive = true;
        request.ContentType = contentType;
        request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1";
        byte[] postData = System.Text.Encoding.GetEncoding("utf-8").GetBytes(postDataStr);
        request.ContentLength = postData.Length;
        Stream myRequestStream = request.GetRequestStream();
        myRequestStream.Write(postData, 0, postData.Length);
        myRequestStream.Close();
        return "";
    }

    /// <summary>
    /// DES加密/解密类。
    /// </summary>
    public class DESHelper
    {

        #region ========加密========

        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="Text"></param>
        /// <returns></returns>
        public static string Encrypt(string Text)
        {
            return Encrypt(Text, "DTcms");
        }
        /// <summary> 
        /// 加密数据 
        /// </summary> 
        /// <param name="Text"></param> 
        /// <param name="sKey"></param> 
        /// <returns></returns> 
        public static string Encrypt(string Text, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            byte[] inputByteArray;
            inputByteArray = Encoding.Default.GetBytes(Text);
            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            StringBuilder ret = new StringBuilder();
            foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            return ret.ToString();
        }

        #endregion

        #region ========解密========

        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="Text"></param>
        /// <returns></returns>
        public static string Decrypt(string Text)
        {
            return Decrypt(Text, "DTcms");
        }
        /// <summary> 
        /// 解密数据 
        /// </summary> 
        /// <param name="Text"></param> 
        /// <param name="sKey"></param> 
        /// <returns></returns> 
        public static string Decrypt(string Text, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            int len;
            len = Text.Length / 2;
            byte[] inputByteArray = new byte[len];
            int x, i;
            for (x = 0; x < len; x++)
            {
                i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
                inputByteArray[x] = (byte)i;
            }
            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            return Encoding.Default.GetString(ms.ToArray());
        }

        #endregion

    }


    public class AESHelper
    {
        /// <summary>
        /// AES加密
        /// </summary>
        /// <param name="Data">被加密的明文</param>
        /// <param name="Key">密钥</param>
        /// <param name="Vector">向量</param>
        /// <returns>密文</returns>
        public static String AESEncrypt(String Data, String Key, String Vector)
        {
            Byte[] plainBytes = Encoding.UTF8.GetBytes(Data);

            Byte[] bKey = new Byte[32];
            Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
            Byte[] bVector = new Byte[16];
            Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length)), bVector, bVector.Length);

            Byte[] Cryptograph = null; // 加密后的密文

            Rijndael Aes = Rijndael.Create();
            try
            {
                // 开辟一块内存流
                using (MemoryStream Memory = new MemoryStream())
                {
                    // 把内存流对象包装成加密流对象
                    using (CryptoStream Encryptor = new CryptoStream(Memory,
                     Aes.CreateEncryptor(bKey, bVector),
                     CryptoStreamMode.Write))
                    {
                        // 明文数据写入加密流
                        Encryptor.Write(plainBytes, 0, plainBytes.Length);
                        Encryptor.FlushFinalBlock();

                        Cryptograph = Memory.ToArray();
                    }
                }
            }
            catch
            {
                Cryptograph = null;
            }

            return Convert.ToBase64String(Cryptograph);
        }

        /// <summary>
        /// AES解密
        /// </summary>
        /// <param name="Data">被解密的密文</param>
        /// <param name="Key">密钥</param>
        /// <param name="Vector">向量</param>
        /// <returns>明文</returns>
        public static String AESDecrypt(String Data, String Key, String Vector)
        {
            Byte[] encryptedBytes = Convert.FromBase64String(Data);
            Byte[] bKey = new Byte[32];
            Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
            Byte[] bVector = new Byte[16];
            Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length)), bVector, bVector.Length);

            Byte[] original = null; // 解密后的明文

            Rijndael Aes = Rijndael.Create();
            try
            {
                // 开辟一块内存流,存储密文
                using (MemoryStream Memory = new MemoryStream(encryptedBytes))
                {
                    // 把内存流对象包装成加密流对象
                    using (CryptoStream Decryptor = new CryptoStream(Memory,
                    Aes.CreateDecryptor(bKey, bVector),
                    CryptoStreamMode.Read))
                    {
                        // 明文存储区
                        using (MemoryStream originalMemory = new MemoryStream())
                        {
                            Byte[] Buffer = new Byte[1024];
                            Int32 readBytes = 0;
                            while ((readBytes = Decryptor.Read(Buffer, 0, Buffer.Length)) > 0)
                            {
                                originalMemory.Write(Buffer, 0, readBytes);
                            }

                            original = originalMemory.ToArray();
                        }
                    }
                }
            }
            catch
            {
                original = null;
            }
            return Encoding.UTF8.GetString(original);
        }



        /// <summary>
        /// AES加密(无向量)
        /// </summary>
        /// <param name="plainBytes">被加密的明文</param>
        /// <param name="key">密钥</param>
        /// <returns>密文</returns>
        public static string AESEncrypt(String Data, String Key)
        {
            MemoryStream mStream = new MemoryStream();
            RijndaelManaged aes = new RijndaelManaged();

            byte[] plainBytes = Encoding.UTF8.GetBytes(Data);
            Byte[] bKey = new Byte[32];
            Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);

            aes.Mode = CipherMode.ECB;
            aes.Padding = PaddingMode.PKCS7;
            aes.KeySize = 128;
            //aes.Key = _key;
            aes.Key = bKey;
            //aes.IV = _iV;
            CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
            try
            {
                cryptoStream.Write(plainBytes, 0, plainBytes.Length);
                cryptoStream.FlushFinalBlock();
                return Convert.ToBase64String(mStream.ToArray());
            }
            finally
            {
                cryptoStream.Close();
                mStream.Close();
                aes.Clear();
            }
        }


        /// <summary>
        /// AES解密(无向量)
        /// </summary>
        /// <param name="encryptedBytes">被加密的明文</param>
        /// <param name="key">密钥</param>
        /// <returns>明文</returns>
        public static string AESDecrypt(String Data, String Key)

        {
            Byte[] encryptedBytes = Convert.FromBase64String(Data);
            Byte[] bKey = new Byte[32];
            Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);

            MemoryStream mStream = new MemoryStream(encryptedBytes);
            //mStream.Write( encryptedBytes, 0, encryptedBytes.Length );
            //mStream.Seek( 0, SeekOrigin.Begin );
            RijndaelManaged aes = new RijndaelManaged();
            aes.Mode = CipherMode.ECB;
            aes.Padding = PaddingMode.PKCS7;
            aes.KeySize = 128;
            aes.Key = bKey;
            //aes.IV = _iV;
            CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
            try
            {
                byte[] tmp = new byte[encryptedBytes.Length + 32];
                int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length + 32);
                byte[] ret = new byte[len];
                Array.Copy(tmp, 0, ret, 0, len);
                return Encoding.UTF8.GetString(ret);
            }
            finally
            {
                cryptoStream.Close();
                mStream.Close();
                aes.Clear();
            }
        }




    }


    /// <summary>
    /// 图片压缩
    /// </summary>
    /// <param name="imagePath">图片文件路径</param>
    /// <param name="targetpath">保存路径</param>
    /// <param name="quality">压缩质量</param>
    public static void CompressionImage(string imagePath, string targetpath, long quality = 100)
    {
        if (!File.Exists(imagePath))
        {
            throw new FileNotFoundException();
        }
        var fileInfo = new FileInfo(imagePath);
        var fileName = fileInfo.Name.Replace(fileInfo.Extension, "");
        var fileFullName = targetpath;

        var imageByte = CompressionImage(imagePath, quality);
        var ms = new MemoryStream(imageByte);
        var image = Image.FromStream(ms);
        image.Save(fileFullName);
        ms.Close();
        ms.Dispose();
        image.Dispose();
    }
    private static byte[] CompressionImage(string imagePath, long quality)
    {
        using (var fileStream = new FileStream(imagePath, FileMode.Open))
        {
            using (var img = Image.FromStream(fileStream))
            {
                using (var bitmap = new Bitmap(img))
                {
                    var codecInfo = GetEncoder(img.RawFormat);
                    var myEncoder = System.Drawing.Imaging.Encoder.Quality;
                    var myEncoderParameters = new EncoderParameters(1);
                    var myEncoderParameter = new EncoderParameter(myEncoder, quality);
                    myEncoderParameters.Param[0] = myEncoderParameter;
                    using (var ms = new MemoryStream())
                    {
                        bitmap.Save(ms, codecInfo, myEncoderParameters);
                        myEncoderParameters.Dispose();
                        myEncoderParameter.Dispose();
                        return ms.ToArray();
                    }
                }
            }
        }
    }

    private static ImageCodecInfo GetEncoder(ImageFormat format)
    {
        var codecs = ImageCodecInfo.GetImageDecoders();
        return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid);
    }
}
复制代码

 

posted @   鞍山老菜鸟  阅读(449)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示