zoukankan      html  css  js  c++  java
  • C#图片操作公共库

    存一下,以后找起来方便

    包括图片加载、压缩、base64等

    public static class ImageFun
        {
    
            #region 图片
            public static EncoderParameters GetEncoderParas(long picquality)
            {
                EncoderParameters eps = new EncoderParameters(1);
                Encoder ec = Encoder.Quality;
                EncoderParameter ep = new EncoderParameter(ec, picquality);
                eps.Param[0] = ep;
    
                return eps;
            }
    
            public static ImageCodecInfo GetJpegCodecInfo()
            {
                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;
                    }
                }
    
                return jpegICIinfo;
            }
    
            public static System.Drawing.Image GetImage(string path)
            {
                FileStream fs = new FileStream(path, FileMode.Open);
                Image result = Image.FromStream(fs);
    
                fs.Close();
    
                return result;
            }
    
            public static Bitmap GetImageFromBase64(string base64string)
            {
                byte[] b = Convert.FromBase64String(base64string);
                MemoryStream ms = new MemoryStream(b);
                Bitmap bitmap = new Bitmap(ms);
                return bitmap;
            }
    
            public static string GetBase64FromImage(string imagefile)
            {
                string strbaser64 = "";
                try
                {
                    Bitmap bmp = new Bitmap(imagefile);
                    MemoryStream ms = new MemoryStream();
                    bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    byte[] arr = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(arr, 0, (int)ms.Length);
                    ms.Close();
                    strbaser64 = Convert.ToBase64String(arr);
                }
                catch (Exception)
                {
                    return "";
                }
                return strbaser64;
            }
    
            /// <summary> 
            /// 按照比例缩小图片 
            /// </summary> 
            /// <param name="srcImage">要缩小的图片</param> 
            /// <param name="percent">缩小比例</param> 
            /// <returns>缩小后的结果</returns> 
            public static Bitmap PercentImage(Image srcImage, double percent)
            {
                // 缩小后的高度 
                int newH = int.Parse(Math.Round(srcImage.Height * percent).ToString());
                // 缩小后的宽度 
                int newW = int.Parse(Math.Round(srcImage.Width * percent).ToString());
                try
                {
                    // 要保存到的图片 
                    Bitmap b = new Bitmap(newW, newH);
                    Graphics g = Graphics.FromImage(b);
                    // 插值算法的质量 
                    g.InterpolationMode = InterpolationMode.Default;
                    g.DrawImage(srcImage, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
                    g.Dispose();
                    return b;
                }
                catch (Exception)
                {
                    return null;
                }
            }
    
            /// <summary> 
            /// 按照指定大小缩放图片 
            /// </summary> 
            /// <param name="srcImage"></param> 
            /// <param name="iWidth"></param> 
            /// <param name="iHeight"></param> 
            /// <returns></returns> 
            public static Bitmap SizeImage(Image srcImage, int iWidth, int iHeight)
            {
                try
                {
                    // 要保存到的图片 
                    Bitmap b = new Bitmap(iWidth, iHeight);
                    Graphics g = Graphics.FromImage(b);
                    // 插值算法的质量 
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.DrawImage(srcImage, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
                    g.Dispose();
                    return b;
                }
                catch (Exception)
                {
                    return null;
                }
            }
    
            /// <summary> 
            /// jpeg图片压缩 
            /// </summary> 
            /// <param name="sFile"></param> 
            /// <param name="outPath"></param> 
            /// <param name="flag"></param> 
            /// <returns></returns> 
            public static bool GetPicThumbnail(string sFile, string outPath, int flag)
            {
                if (File.Exists(outPath)) File.Delete(outPath);
    
                System.Drawing.Image iSource = System.Drawing.Image.FromFile(sFile);
                ImageFormat tFormat = iSource.RawFormat;
                //以下代码为保存图片时,设置压缩质量 
                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)
                    {
                        iSource.Save(outPath, jpegICIinfo, ep);//dFile是压缩后的新路径 
                    }
                    else
                    {
                        iSource.Save(outPath, tFormat);
                    }
                    return true;
                }
                catch
                {
                    return false;
                }
                finally
                {
                    iSource.Dispose();
                }
            }
            #endregion
        }
    

      

  • 相关阅读:
    共用体
    位运算符和位运算
    python中while循环
    c语言中求多个整数的和及其平均值
    c语言中switch语句
    python中删除列表中多次重复的元素
    python中while循环
    python中break语句
    使用用户输入来填充字典
    python中while循环使用标志
  • 原文地址:https://www.cnblogs.com/jhlong/p/7514040.html
Copyright © 2011-2022 走看看