c# - 如何从 NEF 或其他 RAW 格式制作字节数组并进行编辑?
问题描述
我试图在 WPF 中制作简单的照片编辑器(用于调整亮度、对比度、饱和度等...),我使用包含 ToByteArray 方法的 Magick.NET,但问题是我不能用这种方法制作 ByteArray,因为我是出现异常是因为它出于某种原因不想从 NEF 格式制作 ByteArray ......
我的第一个想法是采用 NEF 格式将其转换为临时 TIFF 文件,该文件可以使用这种特定方法转换为 ByteArray,并且该文件可以转换为 bytearray,但我认为非常不方便且不太聪明。
第二件事是当我有WritableBitmap时。如何从中制作图像以供 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()
改为执行。
推荐阅读
- python - pyvirtualdisplay 中的 XStartError
- swift - “从抛出函数到非抛出函数的无效转换”,试图存储一个闭包,它不能抛出
- flutter - 我想为这个小部件中的局部变量分配一个日期值并显示在文本框中
- c# - DataGrdiview ComboBox 更改结果
- python - 如何将带有 JSON 文档列的表转换为多个熊猫数据框
- javascript - 有人可以用最通俗的术语解释 unmountComponentAtNode' 的作用吗?
- google-apps-script - gmail脚本的“需要授权才能执行该操作”
- c++ - GLFW 程序在 Cygwin 下冻结?
- javascript - 调整网格大小的问题 - JavaScript CSS HTML,Odin 项目的 etch-a-sketch
- python - 在 USB 上运行 Python