WPF中使用InPlaceBitmapMetadataWriter在图片中插入元数据(metadata)

标签: wpftiffadobestream
2502人阅读 评论(4) 收藏 举报
分类:

 BitmapFrame支持CreateInPlaceBitmapMetadataWriter方法在图片中写入元数据(metadata)信息。
比如:

Stream pngStream = new System.IO.FileStream("Johnson.png", 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", "Happy every day!"); }
pngStream.Close();

使用SetQueryGetQuery方法可以创建和读取元数据(metadata)。
如上面,你可以使用pngInplace.GetQuery("/Text/Description").ToString();得到元数据。

又如tiff的元数据设置:
BitmapMetadata tiffMetadata = new BitmapMetadata("tiff");
tiffMetadata.SetQuery("/ifd/{ushort=1000}", 9999);
tiffMetadata.SetQuery("/ifd/{uint=1001}", 23456);
tiffMetadata.SetQuery("/ifd/{uint=1002}", 34567);
tiffMetadata.SetQuery("/ifd/PaddingSchema:padding", (UInt32)4096);
tiffMetadata.SetQuery("/ifd/exif", new BitmapMetadata("exif"));
tiffMetadata.SetQuery("/ifd/exif/PaddingSchema:padding", (UInt32)4096);

查看图片的元数据时,你还可以使用BitmapFrame的Metadata属性

如果你对Adobe的XMP感兴趣,你可以查阅读:
Extensible Metadata Platform (XMP) http://www.adobe.com/products/xmp/index.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2992121次
    • 积分:29393
    • 等级:
    • 排名:第179名
    • 原创:399篇
    • 转载:74篇
    • 译文:1篇
    • 评论:1373条
    最新评论
    软件开发
    图书出版