2010-08-04 77 views
2

我正在開發一個項目,其中包含一個由管理面板管理的圖片庫。我想在活動的管理面板中向管理員顯示縮略圖圖像,並將顯示給最終用戶。在c#中使用圖像和位圖?

好的。我用兩個參數將圖像存儲在數據庫中:ImageData(byte []),ImageMimeType。所以我想在第一次存儲圖像時存儲圖片的縮略圖版本。 我已經發現了一些示例代碼在此ADRESS link text來調整和操作圖片:

private static Image cropImage(Image img, Rectangle cropArea) 
{ 
    Bitmap bmpImage = new Bitmap(img); 
    Bitmap bmpCrop = bmpImage.Clone(cropArea, 
    bmpImage.PixelFormat); 
    return (Image)(bmpCrop); 
} 

該功能拍攝的圖像作爲參數。但我有ImageData(byte [])。

那麼,如何將我的字節數組轉換爲圖像和圖像到字節數組?

回答

2

圖片從字節數組

public Image byteArrayToImage(byte[] byteArray) 
{ 
    MemoryStream ms = new MemoryStream(byteArray); 
    return Image.FromStream(ms); 
} 

圖像要字節數組

public byte[] imageToByteArray(Image image) 
{ 
MemoryStream ms = new MemoryStream(); 
return image.Save(ms,ImageFormat.Jpeg).ToArray(); 
} 
2
public Image ByteArrayToImage(byte[] byteArrayIn) 
{ 
    MemoryStream ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 

實測值here其中也有很多的其他示例

+1

如果你要直接舉這個例子,你應該參考網頁... – Ian 2010-08-04 11:48:51

+0

你是對的,我會添加它 – w69rdy 2010-08-04 12:10:37

4

創建從一個流中的圖像:

private static Image cropImage(byte[] imgArray, Rectangle cropArea) 
{ 
    MemoryStream ms = new MemoryStream(imgArray); 
    Image img = Image.FromStream(ms); 
    Bitmap bmpImage = new Bitmap(img); 
    Bitmap bmpCrop = bmpImage.Clone(cropArea, 
    bmpImage.PixelFormat); 
    return (Image)(bmpCrop); 
} 
0

類似這樣的事情嗎?

Bitmap bmpImage = new Bitmap(img); 
MemoryStream stream = new MemoryStream(); 
try { 
    bmpImage.Save(stream, bmpImage.RawFormat); 
    byte[] bytes = stream.ToArray(); 
} 
finally { 
    stream.Close(); 
    ((IDisposable)stream).Dispose(); 
} 

另外,您可以從byte []創建MemoryStream,然後從該流加載Image。