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

しかし、このメソッドを呼び出すと、「一般的な gdi+ エラー」という例外がスローされ、エラー番号は -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

考えられる唯一の問題は、画像が大きすぎるか大きすぎることです。おそらく、MemoryStream を使用する代わりに、 File.ReadAllBytesを直接使用して、Bitmap オブジェクトを渡したり、MemoryStream に直接保存したり、保存したりする必要はありません。

また、テキスト用の StreamReader を使用してデータを読み取っています。バイトを配列に読み込み、 Convert.ToBase64String() を呼び出すだけで、やりたいことを処理できます。

于 2013-09-25T17:31:35.483 に答える