使用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下载的。你能说出上面的代码出了什么问题吗?
发布于 2011-09-14 16:18:16
查看本文中的示例:http://www.codeproject.com/KB/recipes/ImageConverter.aspx
另外,最好使用System.Drawing
中的类
Image img = Image.FromFile(@"C:\Lenna.jpg");
byte[] arr;
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
arr = ms.ToArray();
}
发布于 2014-03-06 20:13:54
其他建议:
byte[] image = System.IO.File.ReadAllBytes ( Server.MapPath ( "noimage.png" ) );
不应该只处理图像。
发布于 2013-04-04 17:53:15
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
https://stackoverflow.com/questions/7413184
复制相似问题