我有这个代码来解码内存流,但是,它没有担心,我得到这个错误: “没有找到适合完成此操作的成像组件。”
MemoryStream stream = new MemoryStream(value, false);
stream.Seek(0, SeekOrigin.Begin);
JpegBitmapDecoder JpegBitmapDecoder = new JpegBitmapDecoder(
stream, BitmapCreateOptions.None,
BitmapCacheOption.None);
image.Source = JpegBitmapDecoder.Frames[0];
image.Height = hh;
image.Width = ww;
stream.Close();
UIVisual.Background = null;
UIVisual.Child = image;
UIVisual.UpdateLayout();
image = null;
以下是我将图像转换为字节的方式:
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.Frames.Add(bitmapFrame);
Byte[] _imageArray;
MemoryStream memStream = new MemoryStream();
jpgEncoder.Save(memStream);
return memStream.ToArray();
所以,我存储memStream.ToArray()以便以后使用它,我从存储的memStream.ToArray()创建MemoryStream,并像上面的代码一样使用JpegBitmapDecoder。
为什么我无法检索存储的字节?我做错了吗? 感谢
答案 0 :(得分:1)
您有两个选项返回Byte []或MemoryStream,请参阅以下代码。
希望它可以提供帮助
Shalom Keynan
private static MemoryStream GetImageAsMemoryStream(BitmapSource bitmapSource)
{
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.Frames.Add(BitmapFrame.Create(bitmapSource));
// Byte[] _imageArray;
MemoryStream memStream = new MemoryStream();
jpgEncoder.Save(memStream);
//_imageArray= memStream.ToArray();
memStream.Seek(0, SeekOrigin.Begin); // you MUST rewind before decoding
return memStream;
}
private static Byte[] GetImageAsByte(BitmapSource bitmapSource)
{
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.Frames.Add(BitmapFrame.Create(bitmapSource));
Byte[] _imageArray;
MemoryStream memStream = new MemoryStream();
jpgEncoder.Save(memStream);
_imageArray = memStream.ToArray();
return _imageArray;
}
祝你好运!