You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将原图片的EXIF数据转移到编辑处理后的新图片中

解决方案

你当前的实现仅向Jpeg编码器传入了处理后的像素数据,未携带原图像的EXIF元数据,因此导出的新图片会丢失所有EXIF信息。

你只需要调整原图加载逻辑,提取原图像的元数据后传入新生成的帧即可,修改后的完整代码如下:

void FixFile(string path)
{
    // 先加载原图帧,提取包含EXIF的元数据、缩略图、色彩上下文等信息
    var originalFrame = BitmapFrame.Create(new Uri(path));
    var bmp = new WriteableBitmap(originalFrame);
    
    bmp.Lock();

    // 原有伪影修复逻辑
    // magick

    bmp.Unlock();

    using (var stream = new FileStream(path.Replace("DSC", "fix_DSC"), FileMode.Create))
    {
        var encoder = new JpegBitmapEncoder();
        // 生成新帧时传入原图像的元数据、缩略图、色彩配置
        encoder.Frames.Add(BitmapFrame.Create(bmp, originalFrame.Thumbnail, originalFrame.Metadata, originalFrame.ColorContexts));
        encoder.Save(stream);
    }
}

注意事项

  • 如果需要修改EXIF内容,不要直接操作原originalFrame.Metadata,先克隆为可写的元数据对象:
    var editableMetadata = (BitmapMetadata)originalFrame.Metadata.Clone();
    // 可通过SetQuery方法修改对应EXIF字段
    // 例:修改拍摄时间 editableMetadata.SetQuery("/app1/ifd/exif/{ushort=36867}", "2024:05:20 14:30:00");
    // 之后将editableMetadata传入新BitmapFrame即可
    
  • 该方法可以完整保留原图像的所有EXIF信息、缩略图、色彩配置,不会额外丢失其他元数据。

内容的提问来源于stack exchange,提问作者yadda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:48:01