C#圖片操作公用庫

來源:互聯網
上載者:User

標籤:mat   osi   end   eww   rect   int   bre   mba   rpo   

存一下,以後找起來方便

 

包括圖片載入、壓縮、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    }

  

C#圖片操作公用庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.