在c#中使用图像和位图?

问题描述:

我正在开发一个项目,其中包含一个由管理面板管理的图片库。我想在活动的管理面板中向管理员显示缩略图图像,并将显示给最终用户。在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 [])。

那么,如何将我的字节数组转换为图像和图像到字节数组?

图片从字节数组

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

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

创建从一个流中的图像:

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

类似这样的事情吗?

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。