此代码返回从字节数组加载的图像的缩略图。我试图理解为什么作者使用 4 个内存流,以及是否有一种简单的方法可以重写它,或者这样是否可以。
public Image GetThumbnail(int height, int width)
{
//load the image from a byte array (imageData)
using (MemoryStream mem = new MemoryStream(this.imageData))
{
// Create a Thumbnail from the image
using (Image thumbPhoto = Image.FromStream(mem,
true).GetThumbnailImage(height, width, null,
new System.IntPtr()))
{
// Convert the Image object to a byte array
using (MemoryStream ms = new MemoryStream())
{
thumbPhoto.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
using (MemoryStream m = new MemoryStream(ms.ToArray()))
{
return Image.FromStream(m, true);
}
}
}
}
}
最佳答案
他实际上只使用了 3 个 MemoryStream,但他只需要使用 2 个(我认为)。您应该能够替换此代码:
using (MemoryStream m = new MemoryStream(ms.ToArray()))
{
return Image.FromStream(m, true);
}
这样:
ms.Seek(0, SeekOrigin.Begin);
return Image.FromStream(ms, true);
我认为他创建了第三个 MemoryStream,因为 ms
MemoryStream 不在开始处。
关于c# - 如何简化此 MemoryStream 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608190/