C# 编译器可以';在WP7中找不到JpegBitmapEncoder类
我要失去它了, 我做错了什么C# 编译器可以';在WP7中找不到JpegBitmapEncoder类,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我要失去它了, 我做错了什么 错误3当前上下文中不存在名称“BitmapFrame” 错误2找不到类型或命名空间名称“JpegBitmapEncoder”(是否缺少using指令或程序集引用? 代码: namespace Microsoft.Samples.CRUDSqlAzure.Phone.Converters { using System; using System.Windows.Data; using System.IO; using System.Windows.Media.Imag
错误3当前上下文中不存在名称“BitmapFrame”
错误2找不到类型或命名空间名称“JpegBitmapEncoder”(是否缺少using指令或程序集引用?
代码:
namespace Microsoft.Samples.CRUDSqlAzure.Phone.Converters
{
using System;
using System.Windows.Data;
using System.IO;
using System.Windows.Media.Imaging;
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
byte[] rawImageBytes = (byte[])value;
BitmapImage imageSource = null;
try
{
using (MemoryStream stream = new MemoryStream(rawImageBytes))
{
stream.Seek(0, SeekOrigin.Begin);
BitmapImage b = new BitmapImage();
b.SetSource(stream);
imageSource = b;
}
return imageSource;
}
catch
{
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
BitmapImage bitmapImage = (BitmapImage)value;
byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
data = ms.ToArray();
}
return data;
}
catch
{
return null;
}
}
}
}wp7上的Silverlight没有JpegBitmapEncoder。如果要将位图源转换为字节数组,可以使用WriteableBitmap的SaveJpeg方法:
try
{
BitmapImage bitmapImage = (BitmapImage)value;
byte[] data;
WriteableBitmap wb = new WriteableBitmap(bitmapImage);
using (MemoryStream ms = new MemoryStream())
{
wb.SaveJpeg(ms, bitmapImage.PixelHeight, bitmapImage.PixelWidth, 0, 100);
data = ms.ToArray();
}
return data;
}
catch
{
return null;
}
如果要将BitmapSource转换为其他文件格式,如png或gif,则必须使用第三方库,如
但在转换器中来回转换图像不是一个好主意。我甚至不认为你真的需要。您使用什么控件修改位图源?:\ 谢谢,我正在尝试将它绑定到我的xaml页面上的
元素。我需要使用一个转换器来实现这一点,因为我将数据保存在一个字节[]中,我仍然不完全理解您要做什么。所以你有你的图像保存为字节数组。。。所有内容都存储为字节数组,所以没关系。您希望将其绑定到图像控件。好的,您必须使用转换器将字节数组转换为ImageSource。但你为什么要把它转换回来呢?很好的一点,事实上,想想看,当我从数据库读取到应用程序时,我需要从字节数组转换到imagesource,当我用手机的摄像头拍照并保存到db时,我需要将它从imagesource转换到字节数组。我认为在活动中保存摄像头照片是一个更好的主意,我知道这不是你想用绑定来解决的问题。你可能是对的,我对这一点还不熟悉,并且仍然在了解如何用我拍摄的新照片更新我的MVVM应用程序中的模型数据上下文。有点困惑