小文件转Base64String工具类

用于小文件转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);
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值