2013-09-25 27 views
1

我的朋友, 我想在c#控制檯應用程序(.net 4.0)中將圖像轉換爲Base64字符串。通用GDI +錯誤(錯誤號-2147467259)

的方法:

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

任何人都可以給我幫助嗎? 謝謝。

+0

重複 - 檢查這個帖子:http://stackoverflow.com/questions/1053052/a-generic-error-occurred-in-gdi-jpeg-image-to-memorystream – maseal

回答

0

我看到的唯一可能的問題是圖像太大或太大。也許,不是使用MemoryStream,而是直接使用File.ReadAllBytes,而不是傳遞Bitmap對象,直接保存到MemoryStream並保存。

另外,您正在使用StreamReader讀取數據,這是用於文本的!移動到只讀數組中的字節並調用Convert.ToBase64String()應該處理你想要做的事情。

+0

好吧,我以不同的方式做到了這一點現在工作正常。 –

+0

@ JeanJ.Michel:哪個方向?請分享他人的代碼。 –

+0

@ jitendra-pancholi https://github.com/jeanjmichel/resizing-images-in-.net-c-最後一堂課。 –