有没有办法用PN#在PNG中编写EXIF数据?

时间:2014-03-04 16:07:39

标签: c# png exif

我知道PNG不支持EXIF MetaData(根据W3C),但是我有一个工具可以在zTXt块的PNG中注入EXIF MetaData,我已经到处搜索但是没有找到如何编写EXIF数据在PNG中使用c#使用sqtquery或任何其他方式。

1 个答案:

答案 0 :(得分:1)

只要您可以将数据写为文本,这是一个简单的解决方案:

    public void WriteTextInPngFile(string filename, string description, string otherText)
{
    Stream pngStream = new System.IO.FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
    PngBitmapDecoder pngDecoder = new PngBitmapDecoder(pngStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
    BitmapFrame pngFrame = pngDecoder.Frames[0];
    InPlaceBitmapMetadataWriter pngInplace = pngFrame.CreateInPlaceBitmapMetadataWriter();
    if (pngInplace.TrySave() == true)
    { 
        pngInplace.SetQuery("/Text/Description", description); 
        pngInplace.SetQuery("/Text/YourField", otherText); 
    }
    pngStream.Close();
}

您必须设置以下参考:

  • PresentationCore
  • System.Xaml
  • WindowsBase

此示例基于BitmapFrame类

的帮助