图像保存到memorystream exif格式

时间:2013-06-10 09:28:47

标签: c# system.drawing

当我以Exif格式将图像保存到memoriestream时,我得到一个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格式的图像保存到内存流?

1 个答案:

答案 0 :(得分:0)

实际上我认为它甚至不能用于保存磁盘上的文件。如果您打开已保存的文件,则标题中包含PNG。如果检查内部,则save方法如下所示:

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);
    }