将Base64字符串转换为位图或图像Xamarin或Android

6

我想将一个Base64字符串转换为图像,并使用相同的图像设置ImageView。 我知道如何在Java中完成它,但是在C#中遇到了麻烦。 有人知道如何在C#中完成吗?

我尝试过一些代码;

public Image Base64ToImage(string base64String)
 {
    // Convert base 64 string to byte[]
    byte[] imageBytes = Convert.FromBase64String(base64String);
    // Convert byte[] to Image
    using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
    {
        Image image = Image.FromStream(ms, true);
        return image;
    }
 }
3个回答

11

Base64转换为位图:

public Bitmap Base64ToBitmap(String base64String)
{
    byte[] imageAsBytes = Base64.Decode(base64String, Base64Flags.Default);
    return BitmapFactory.DecodeByteArray(imageAsBytes, 0, imageAsBytes.Length);
}

位图转换为Base64:

public String BitmapToBase64(Bitmap bitmap)
{
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.Compress(Bitmap.CompressFormat.Png, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.ToByteArray();
    return Base64.EncodeToString(byteArray, Base64Flags.Default);
}

4

将图片转换为Base64字符串, 在线转换 - 这里

 public string ImageToBase64(Image image, 
  System.Drawing.Imaging.ImageFormat format)
{
  using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();

    // Convert byte[] to Base64 String
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
  }
}

将Base64字符串转换为图片,在线转换 - 这里

    public Image Base64ToImage(string base64String)
{
  // Convert Base64 String to byte[]
  byte[] imageBytes = Convert.FromBase64String(base64String);
  MemoryStream ms = new MemoryStream(imageBytes, 0, 
    imageBytes.Length);

  // Convert byte[] to Image
  ms.Write(imageBytes, 0, imageBytes.Length);
  Image image = Image.FromStream(ms, true);
  return image;
}

嗨,Vishwesh,我尝试了这段代码,但是我得到了以下错误信息:“Image”不包含“FromStream”的定义。顺便说一下,我正在使用Visual Studio 2015。 - Joewy Lombe
MemoryStream ms = new MemoryStream(imageBytes); 就足够了,您不需要对其进行 Write。在传递给 FromStream 前,您还必须将其位置设置为 0。 - Vishwesh Jainkuniya

3
我假设你的编码数据是某种位图格式?如果是这样,你应该可以像这样做:
public Bitmap Base64ToImage(string base64String)
 {
    // Convert base 64 string to byte[]
    byte[] imageBytes = Convert.FromBase64String(base64String);
    // Convert byte[] to Image
    using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
    {
        Bitmap image = BitmapFactory.FromStream(ms, true);
        return image;
    }
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接