我正在使用C#,试图从磁盘加载JPEG文件并将其转换为字节数组。到目前为止,我的代码是这样的:
static void Main(string[] args)
{
System.Windows.Media.Imaging.BitmapFrame bitmapFrame;
using (var fs = new System.IO.FileStream(@"C:\Lenna.jpg", FileMode.Open))
{
bitmapFrame = BitmapFrame.Create(fs);
}
System.Windows.Media.Imaging.BitmapEncoder encoder =
new System.Windows.Media.Imaging.JpegBitmapEncoder();
encoder.Frames.Add(bitmapFrame);
byte[] myBytes;
using (var memoryStream = new System.IO.MemoryStream())
{
encoder.Save(memoryStream); // Line ARGH
// mission accomplished if myBytes is populated
myBytes = memoryStream.ToArray();
}
}
然而,执行ARGH
这一行会显示以下消息:
未处理的 COMException。句柄无效。(来自 HRESULT: 0x80070006 (E_HANDLE) 的异常)
我认为文件Lenna.jpg
没有任何特殊之处 - 我从http://computervision.wikia.com/wiki/File:Lenna.jpg下载了它。你能告诉我上面的代码有什么问题吗?
img.Save()
应该将img.RawFormat
作为第二个参数而不是ImageFormat.Jpeg
。上面的代码可以工作,但这应该有助于使用其他格式的所有人。 - keeehlan