这是问题所在。 我想从本地驱动器打开一个文件,然后将其变成WritableBitmap,以便我可以编辑它。 但问题是,我无法从Uri或类似的东西创建WritableBitmap。我也知道如何打开一个文件到BitmapImage但我无法弄清楚如何打开文件作为WritableBitmap。 有没有办法直接打开文件到WritableBitmap,如果没有,有没有办法将BitmapImage转换为WritableBitmap? 谢谢你们。
答案 0 :(得分:4)
您可以将图片文件加载到BitmapImage并将其用作WriteableBitmap的来源:
BitmapImage bitmap = new BitmapImage(new Uri("YourImage.jpg", UriKind.Relative));
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmap);
答案 1 :(得分:1)
我不是专家,也没有立即访问intellisense等等,但这里有...
var fileBytes = File.ReadAllBytes(fileName);
var stream = new MemoryStream(fileBytes);
var bitmap = new BitmapImage(stream);
var writeableBitmap = new WritableBitmap(bitmap);
即使不是一个完美的例子,这应该足以指出你正确的方向。希望如此。
答案 2 :(得分:0)
在Silverlight 5中,您可以使用以下方法从本地磁盘打开文件并将其转换为BitmapImage并将其转换为WriteableBitmap;
OpenFileDialog dlg = new OpenFileDialog();
dlg.Multiselect = false;
dlg.ShowDialog();
byte[] byteArray = new byte[] { };
if (dlg.File == null) return;
BitmapImage bi = new BitmapImage();
bi.CreateOptions = BitmapCreateOptions.None;
// bi.UriSource = new Uri(@"C:\Users\saw\Desktop\image.jpg", UriKind.RelativeOrAbsolute);
bi.SetSource(dlg.File.OpenRead());
WriteableBitmap eb=new WriteableBitmap(bi);
在尝试创建WriteableBitmap时,设置新的Uri给了我错误(对象引用没有设置为对象的实例)