按比例压缩图片和图片转换成BASE64

Posted 畅洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按比例压缩图片和图片转换成BASE64相关的知识,希望对你有一定的参考价值。

通常会需要将突破转换为字符串的操作,贴此详例,仅供参考和积累

   #region 按比例压缩图片和图片转换成BASE64
        /// <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>
        /// 将图片转换成BASE64
        /// </summary>
        /// <param name="imagefile"></param>
        /// <returns></returns>
        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);
                bmp.Dispose();
            }
            catch (Exception)
            {
                //throw new Exception("Something wrong during convert!");
            }
            return strbaser64;
        }
        #endregion


        //将base64字符转换为图片保存
        /// <summary>
        /// 
        /// </summary>
        /// <param name="strbase64">base64字符串</param>
        /// <param name="desPathUrl">图片存放路径</param>
       /// <returns></returns>
        public  static bool Base64StringToImage(string strbase64,string desPathUrl)
        {
            try
            {
                string imgUrl = string.Empty;
                byte[] arr = Convert.FromBase64String(strbase64);
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);

                bmp.Save(desPathUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
                ms.Close();
                return true;
            }
            catch (Exception ex)
            {
                WriteLog("操作:将base64转换为图片并存储,错误原因:"+ex.Message);
                return false;
            }
        }  

 

以上是关于按比例压缩图片和图片转换成BASE64的主要内容,如果未能解决你的问题,请参考以下文章

图片路径转为base64

base64转换成图片

JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持

JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持

img对象,file对象,base64,canvas对象相互转换以及图片压缩

[java] 图片与base64之间的互相转换