小文件转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
- 小文件转Base64String工具类
- base64String
- Base64String
- 用C#实现图片文件与base64string编码解码
- Java对象与XML文件互转的几个小技巧(使用jaxb工具类)
- 图片 byte[] base64string互转
- base64String原理及方法
- 小程序 转码工具
- java工具类小知识
- 工具类小技巧集合
- 一个工具类小demo
- java文件操作工具类。转
- 一个C++小程序——文件整理工具
- 日常生活小技巧 -- 文件对比工具 Beyond Compare
- Java小功能(1)--使用默认工具打开文件
- java文件工具类
- 文件工具类FileUtil
- 属性文件工具类
- java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC
- drools用户指南----Methods vs Rules
- 结构风险最小化
- ppm略解
- java 设计模式 代理模式
- 小文件转Base64String工具类
- BZOJ3944: Sum 杜教筛
- java面试题系列(2)
- 安卓apk中文件类型
- 通过金矿模型介绍动态规划(背包问题)
- tomcat servlet容器请求时序
- 文章标题
- node npm bower 环境搭建windows
- 选择排序法