C#实现的图片、string相互转换类分享

作者:junjie 时间:2022-04-17 04:50:34 

C#中,Image为源自 Bitmap 和 Metafile 的类提供功能的抽象基类,也就是说更通用,当我们用Image.FromFile("xxx")时创建出来的是Image的某个派生类实体,所以我用Image作为参数,而不是Bitmap之类的。

图片在于string转换的时候中间借助于MemorySteam和Byte数组,下面是我写的FormatChange类,里面两个互相转换的过程。当然这里面也就包含了图片与Byte[]数组的相互转换喽。


class FormatChange
 {
   public static string ChangeImageToString(Image image)
   {
     try
     {
       MemoryStream ms = new MemoryStream();
       image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
       byte[] arr = new byte[ms.Length];
       ms.Position = 0;
       ms.Read(arr, 0, (int)ms.Length);
       ms.Close();
       string pic = Convert.ToBase64String(arr);

return pic;
     }
     catch (Exception)
     {
       return "Fail to change bitmap to string!";
     }
   }

public static Image ChangeStringToImage(string pic)
   {
     try
     {
       byte[] imageBytes = Convert.FromBase64String(pic);
       //读入MemoryStream对象
       MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
       memoryStream.Write(imageBytes, 0, imageBytes.Length);
       //转成图片
       Image image = Image.FromStream(memoryStream);

return image;
     }
     catch (Exception)
     {
       Image image = null;
       return image;
     }
   }
 }
标签:C#,图片,string,相互转换
0
投稿

猜你喜欢

  • C#实现将DataTable内容输出到Excel表格的方法

    2023-05-01 15:20:38
  • mybatis注解与xml常用语句汇总

    2022-05-17 18:39:47
  • Maven生命周期和及插件原理用法详解

    2021-09-17 09:47:19
  • Java 添加超链接到 Word 文档方法详解

    2023-01-29 08:49:30
  • Java线程池submit阻塞获取结果的实现原理详解

    2021-08-29 03:55:45
  • jdk8的datetime时间函数使用示例

    2021-07-03 16:42:37
  • Java Objects工具类原理及用法详解

    2022-10-15 01:40:35
  • spring MVC实践需要注意的地方

    2023-02-07 00:33:07
  • Spring基于注解的缓存声明深入探究

    2023-01-20 13:26:06
  • Java工具类DateUtils实例详解

    2022-08-22 00:40:35
  • C#实现观察者模式(Observer Pattern)的两种方式

    2023-06-20 21:05:18
  • IDEA离线安装maven helper插件的图文教程

    2023-11-28 16:00:24
  • JAVA简单工厂模式(从现实生活角度理解代码原理)

    2021-10-29 12:39:32
  • Java并发包线程池ThreadPoolExecutor的实现

    2022-11-10 09:52:41
  • Flyway详解及Springboot集成Flyway的详细教程

    2022-09-21 10:37:49
  • Java Excel透视表相关操作实现代码

    2022-02-27 00:11:01
  • C#中this指针的用法示例

    2021-07-21 14:12:24
  • 详解Java后端优雅验证参数合法性

    2021-09-06 16:07:22
  • Seata AT模式TransactionHook被删除探究

    2022-01-12 14:56:49
  • Spring实战之SpEl语法实例详解

    2023-09-18 07:56:03
  • asp之家 软件编程 m.aspxhome.com