星期三, 8月 11, 2010

Image 轉 Byte[] 的 GDI Error

今天在把 Image 轉成 Byte[] 的時候,一直遇到下列這個錯誤..

errorPage

關於這個錯誤,網路上沒有啥資料可以使用,自己 try 了半天,終於成功用出來了..XD
在這裡紀錄一下,讓以後遇到相同問題的人可以不用像我一樣這樣亂七八糟的亂試,看下面的 code 吧!!

/// <summary>
/// Image轉Byte[]
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
private static byte[] GetImageByte(Image image)
{
Image newImage = image.GetThumbnailImage(image.Width, image.Height,
new System.Drawing.Image.GetThumbnailImageAbort(callBack), IntPtr.Zero);

ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(newImage, typeof(byte[]));
}
private static bool callBack()
{
return true;
}

這 method 的寫法,就是利用原本的 Image 生出一個跟自己一樣的 Image,得到新的 Image 再轉出來,雖然自己有覺得在逃避問題,不過,山不轉路轉阿,先轉過去,之後有時間來慢慢研究吧..暈..

2 則留言:

Will 保哥 提到...

為什麼要用 GetThumbnailImage 呢?

應該先將圖片載入成 Bitmap 格式,再透過 MemoryStream 轉成 byte[] 即可。

以下程式碼片段供參:

MemoryStream ms = new MemoryStream();
_bitmap.Save( ms, ImageFormat.Bmp );
byte[] bitmapData = ms.ToArray();

Bibby 提到...

同樣也是會死掉,這之前用過了