将图像文件打开到WriteableBitmap中

时间:2010-11-23 08:53:50

标签: c# silverlight writeablebitmap

这是问题所在。 我想从本地驱动器打开一个文件,然后将其变成WritableBitmap,以便我可以编辑它。 但问题是,我无法从Uri或类似的东西创建WritableBitmap。我也知道如何打开一个文件到BitmapImage但我无法弄清楚如何打开文件作为WritableBitmap。 有没有办法直接打开文件到WritableBitmap,如果没有,有没有办法将BitmapImage转换为WritableBitmap? 谢谢你们。

3 个答案:

答案 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给了我错误(对象引用没有设置为对象的实例)