Вы можете использовать BitmapMetadata из System.Windows.Media.Imaging для записи значений iTXt.Пример VB:
' Imports System.Windows.Media.Imaging
' Imports System.Windows.Media
Dim width = 256
Dim height = 256
Dim pngMetadata = New BitmapMetadata("png")
' PNG spec: http://www.libpng.org/pub/png/book/chapter11.html - Info on the iTXt chunk (and other custom metadata tags).
pngMetadata.SetQuery("/iTXt/Keyword", "SomeKeyword".ToCharArray())
pngMetadata.SetQuery("/iTXt/TextEntry", "SomeValue")
Dim bitmap = New WriteableBitmap(width, height, 96, 96, PixelFormats.Gray8, Nothing)
Dim pixels = New Byte(width * height - 1) {}
For y = 0 To height - 1
For x = 0 To width - 1
pixels(y * width + x) = CByte(x)
Next
Next
bitmap.WritePixels(New Int32Rect(0, 0, width, height), pixels, width, 0)
Dim encoder = New PngBitmapEncoder()
encoder.Frames.Add(BitmapFrame.Create(bitmap, Nothing, pngMetadata, Nothing))
Using stream = File.Create("c:\pngWithMetaData.png")
encoder.Save(stream)
End Using