欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-03 10:53:58
c#中,image为源自 bitmap 和 metafile 的类提供功能的抽象基类,也就是说更通用,当我们用image.fromfile("xxx")时创建出来的是ima...

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;
      }
    }
  }