小文件转Base64String工具类

来源:互联网 发布:吉他知乎 编辑:程序博客网 时间:2024/06/18 17:04

用于小文件转base64,请无用于大文件,不多说贴源码

 public static class ImageToBase64StringTools    {        /// <summary>        /// 获取文件字节数组 请勿用于大文件        /// </summary>        /// <param name="filePath">文件路径</param>        /// <returns>文件字节数组</returns>        public static byte[] GetBtyes(this string filePath)        {            try            {                byte[] bytes = null;                using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))                {                    bytes = new byte[fileStream.Length];                    fileStream.Read(bytes, 0, bytes.Length);                }                return bytes;            }            catch (Exception exc)            {                throw exc;            }        }        /// <summary>        /// 将图片处理对象转图片字节数组        /// </summary>        /// <param name="bitmapImage">图片处理对象</param>        /// <returns>图片字节数组</returns>        public static byte[] GetBytes(this BitmapImage bitmapImage)        {            byte[] byteArray = null;            try            {                Stream stream = bitmapImage.StreamSource;                if (stream != null && stream.Length > 0)                {                    //很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。                     stream.Position = 0;                    using (BinaryReader binaryReader = new BinaryReader(stream))                    {                        byteArray = binaryReader.ReadBytes((int)stream.Length);                    }                }                return byteArray;            }            catch (Exception exc)            {                throw exc;            }        }        /// <summary>        /// 将Base64String转byte数组        /// </summary>        /// <param name="base64">base64String</param>        /// <returns>byte数组</returns>        public static byte[] GetBytesByBase64String(this string base64)        {            var result = Convert.FromBase64String(base64);            return result;        }        /// <summary>        /// 传入图片所在的绝对路径获取图片处理对象 请勿用于大文件        /// </summary>        /// <param name="filePath">图片所在的绝对路径</param>        /// <returns>图片处理对象</returns>        public static BitmapImage GetBitmapImage(this string filePath)        {            var bytes = filePath.GetBtyes();            var result = bytes.GetBitmapImage();            return result;        }        /// <summary>        /// 图片字节数组转图片处理对象        /// </summary>        /// <param name="byteArray">图片字节数组</param>        /// <returns>图片处理对象</returns>        public static BitmapImage GetBitmapImage(this byte[] byteArray)        {            BitmapImage bmp = null;            try            {                bmp = new BitmapImage();                bmp.BeginInit();                bmp.StreamSource = new MemoryStream(byteArray);                bmp.EndInit();                return bmp;            }            catch (Exception exc)            {                throw exc;            }        }        /// <summary>        /// 将Base64String转图片处理对象        /// </summary>        /// <param name="base64">base64String</param>        /// <returns>图片处理对象</returns>        public static BitmapImage GetBitmapImageByBase64String(this string base64)        {            var bytes = base64.GetBytesByBase64String();            var bitmapImage = bytes.GetBitmapImage();            return bitmapImage;        }        /// <summary>        /// 传入uriString获取图片处理对象        /// </summary>        /// <param name="uriString">uri字符串</param>        /// <returns>图片处理对象</returns>        public static BitmapImage GetBitmapImageByUrl(this string uriString)        {            try            {                BitmapImage bit = new BitmapImage();                bit.BeginInit();                bit.UriSource = new Uri(uriString, UriKind.RelativeOrAbsolute);                bit.EndInit();                return bit;            }            catch (Exception exc)            {                throw exc;            }        }        /// <summary>        /// 将图片字节数组转base64string        /// </summary>        /// <param name="imageBytes">图片字节数组</param>        /// <returns>base64string</returns>        public static string GetBase64String(this byte[] imageBytes)        {            var result = Convert.ToBase64String(imageBytes);            return result;        }        /// <summary>        /// 传入图片所在的绝对路径将图片转为base64string 请勿用于大文件        /// </summary>        /// <param name="filePath">图片所在的绝对路径</param>        /// <returns>base64string</returns>        public static string GetBase64String(this string filePath)        {            var bytes = filePath.GetBtyes();            var result = bytes.GetBase64String();            return result;        }        /// <summary>        /// 将图片处理对象转为base64string        /// </summary>        /// <param name="bitmapImage">图片处理对象</param>        /// <returns>base64string</returns>        public static string GetBase64String(this BitmapImage bitmapImage)        {            var bytes = bitmapImage.GetBytes();            var result = bytes.GetBase64String();            return result;        }        /// <summary>        /// 设置目标图片的缩略图        /// </summary>        /// <param name="targetFile">目标图片路径</param>        /// <param name="outPath">缩略图路径</param>        /// <param name="flag">设置压缩的比例1-100</param>        /// <returns>是否处理完成</returns>        public static bool GetPicThumbnail(this string targetFile, string outPath, int flag)        {            System.Drawing.Image iSource = System.Drawing.Image.FromFile(targetFile);            System.Drawing.Imaging.ImageFormat tFormat = iSource.RawFormat;            //以下代码为保存图片时,设置压缩质量              System.Drawing.Imaging.EncoderParameters ep = new System.Drawing.Imaging.EncoderParameters();            long[] qy = new long[1];            qy[0] = flag;//设置压缩的比例1-100              System.Drawing.Imaging.EncoderParameter eParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);            ep.Param[0] = eParam;            try            {                System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();                System.Drawing.Imaging.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);                }                else                {                    iSource.Save(outPath, tFormat);                }                return true;            }            catch            {                return false;            }            finally            {                iSource.Dispose();                iSource.Dispose();            }        }        /// <summary>        /// 将指定ui元素保存为图片        /// </summary>        /// <param name="ui">要保存为图片的ui元素</param>        /// <param name="filename">保存路径</param>        public static void SaveFrameworkElementToImage(FrameworkElement ui, string filename)        {            using (FileStream ms = new FileStream(filename, FileMode.Create))            {                RenderTargetBitmap bmp = new RenderTargetBitmap((int)ui.ActualWidth, (int)ui.ActualHeight, 96d, 96d, PixelFormats.Pbgra32);                bmp.Render(ui);                BitmapEncoder encoder = new PngBitmapEncoder();                encoder.Frames.Add(BitmapFrame.Create(bmp));                encoder.Save(ms);            }        }    }
0 0
原创粉丝点击