这里有一个问题。 我想要从本地驱动器打开一个文件,然后把它转换成WritableBitmap以便编辑。 但是问题在于,我无法从Uri或类似的东西创建WritableBitmap。我知道如何将文件打开为BitmapImage,但是我无法弄清楚如何将文件打开为WritableBitmap。 是否有一种方法可以直接将文件打开为WritableBitmap?如果没有,是否有一种方法可以将BitmapImage转换为WritableBitmap? 谢谢大家。
这里有一个问题。 我想要从本地驱动器打开一个文件,然后把它转换成WritableBitmap以便编辑。 但是问题在于,我无法从Uri或类似的东西创建WritableBitmap。我知道如何将文件打开为BitmapImage,但是我无法弄清楚如何将文件打开为WritableBitmap。 是否有一种方法可以直接将文件打开为WritableBitmap?如果没有,是否有一种方法可以将BitmapImage转换为WritableBitmap? 谢谢大家。
您可以将图像文件加载到BitmapImage中,并将其用作WriteableBitmap的源:
BitmapImage bitmap = new BitmapImage(new Uri("YourImage.jpg", UriKind.Relative));
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmap);
BitmapImage
构造函数后有检查过bi
不是null
吗?如果是的话,WriteableBitmap
构造函数失败就很合理。 - Frédéric Hamidi我不是专家,也没有立即访问智能感知等工具的权限,但是我会尽力...
var fileBytes = File.ReadAllBytes(fileName);
var stream = new MemoryStream(fileBytes);
var bitmap = new BitmapImage(stream);
var writeableBitmap = new WritableBitmap(bitmap);
即使不是完美的例子,这也足以指引您朝着正确的方向前进。希望如此。
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给了我一个错误(对象引用未设置为对象的实例)