0

画像を Exif 形式でメモリストリームに保存すると、ArgumentNullException が発生します。 Der Wert darf nicht NULL sein.Parametername: エンコーダー

        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 が含まれています。内部を確認すると、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);
    }
于 2013-06-10T09:53:18.950 に答える