0

当我以 Exif 格式将图像保存到记忆流时,我得到一个 ArgumentNullException, Der Wert darf nicht NULL sein.Parametername: encoder 这是我的代码:

        Image image = Image.FromFile(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.jpg");

        image.Save(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.Exif", ImageFormat.Exif);
        using (MemoryStream memstream = new MemoryStream())
        {
            image.Save(memstream, ImageFormat.Exif);

        }

如何将 exif 格式的图像保存到内存流中?

4

1 回答 1

0

实际上,我认为即使将文件保存在磁盘上也不起作用。如果您打开保存的文件,它的标题中有 PNG。如果检查内部结构,保存方法如下所示:

public void Save(string filename, ImageFormat format)
{
    if (format == null)
    {
        throw new ArgumentNullException("format");
    }
    ImageCodecInfo imageCodecInfo = format.FindEncoder();
    if (imageCodecInfo == null)
    {
        imageCodecInfo = ImageFormat.Png.FindEncoder();
    }
    this.Save(filename, imageCodecInfo, null);
}

问题是没有与 EXIF 格式关联的编码器 - 尝试调试

var imageEncoders = ImageCodecInfo.GetImageEncoders();

所以你也可以使用

    Image image = Image.FromFile(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.jpg");

    image.Save(@"C:\Users\tkaemmerling\Pictures\alpha-test-photo.Exif", ImageFormat.Png);
    using (MemoryStream memstream = new MemoryStream())
    {
        image.Save(memstream, ImageFormat.Png);
    }
于 2013-06-10T09:53:18.950 回答