im试图在WPF中制作简单的照片编辑器(用于调整亮度、对比度、饱和度等(,并使用包含ToByteArray方法的Magick.NET,但问题是我无法使用此方法制作ByteArray,因为我遇到了异常,因为它出于某种原因不想从NEF格式制作ByteArray。。。
我的第一个想法是采用NEF格式将其转换为临时TIFF文件,该文件可以用这种特定的方法转换为ByteArray,该文件也可以转换为ByteArray,但我认为这很不方便,也不太聪明
第二件事是当我有可写位图时。如何从中生成图像,以便Magick.NET对其进行编辑?我应该制作另一个用已经创建的ByteArray创建的MagickImage实例并编辑该图像吗?
public void ImageSelectBtn_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == true)
{
using (var imageRaw = new MagickImage(dialog.FileName))
{
imageRaw.Write("D:/Coding/C#/New/SoftlightWPF/SoftlightWPF/Resources/temp.tiff");
MagickImage image = new MagickImage();
image = new MagickImage("D:/Coding/C#/New/SoftlightWPF/SoftlightWPF/Resources/temp.tiff");
byte[] ImageBytes = image.ToByteArray();
Render(ImageBytes);
}
}
}
private void Render(byte[] BytesData)
{
using (var ms = new MemoryStream(BytesData))
{
BitmapImage ImageBitmapSource = new BitmapImage(); //Image
ImageBitmapSource.BeginInit();
ImageBitmapSource.CacheOption = BitmapCacheOption.OnLoad;
ImageBitmapSource.StreamSource = ms;
ImageBitmapSource.EndInit();
WriteableBitmap ImageWritableBitmap = new WriteableBitmap(ImageBitmapSource);
this.ImageField.Source = ImageWritableBitmap;
}
}
已经有一个库可以帮助您做到这一点:https://www.nuget.org/packages/Magick.NET.SystemWindowsMedia/.将其添加到您的项目中,然后改为执行image.ToBitmapSource()
。