当我以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格式的图像保存到内存流?
答案 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);
}