2

我的朋友们,我正在尝试在 ac# 控制台应用程序(.net 4.0)中将图像转换为 Base64 字符串。

方法:

public static String ConvertBitmapToBase64String(Bitmap bitmap, 
                                                 ImageFormat imageFormat)
{
    String generatedString = string.Empty;

    MemoryStream memoryStream = new MemoryStream();
    bitmap.Save(memoryStream, imageFormat);

    memoryStream.Position = 0;
    byte[] byteBuffer = memoryStream.ToArray();

    memoryStream.Close();

    generatedString = Convert.ToBase64String(byteBuffer);

    byteBuffer = null;

    return generatedString;
}

但是当我调用这个方法时,它会抛出一个异常:“generic gdi+ error”,错误号是-2147467259。

调用者代码:

StreamReader streamReader = new StreamReader(@"C:\Anita.jpg");
Bitmap bitmap = new Bitmap(streamReader.BaseStream);

streamReader.Close();

String base64String = ImageUtil.ConvertBitmapToBase64String(bitmap, ImageFormat.Jpeg);

有人可以帮我吗?谢谢。

4

1 回答 1

0

我看到的唯一可能的问题是图像太大或太大。也许,您可以直接使用File.ReadAllBytes而不是使用 MemoryStream,而不是传递 Bitmap 对象,直接保存到 MemoryStream 并保存。

此外,您正在使用用于文本的 StreamReader 读取数据!将字节读入数组并调用 Convert.ToBase64String() 应该可以处理您想要做的事情。

于 2013-09-25T17:31:35.483 回答