【发布时间】:2014-08-19 15:38:42
【问题描述】:
我创建了一个应用程序,它读取 JPEG 元数据并将其存储在数据库中,以便我们可以查看它是否有恶意字符。我可以使用以下代码提取元数据,但无法提取版权状态。有什么办法可以提取出来吗?
var stream = new FileStream(file, FileMode.Open, FileAccess.Read);
var decoder = new JpegBitmapDecoder(stream, BitmapCreateOptions.None, BitmapCacheOption.None);
var metadata = decoder.Frames[0].Metadata as BitmapMetadata;
if (metadata != null)
{
dataGridView1.Rows.Add(file,
metadata.ApplicationName,
metadata.Author != null ? metadata.Author.Aggregate((old, val) => old ?? "" + "; " + val) : "",
metadata.CameraManufacturer,
metadata.CameraModel,
metadata.Comment,
metadata.Copyright,
metadata.DateTaken,
metadata.Format,
metadata.Keywords != null ? metadata.Keywords.Aggregate((old, val) => old ?? "" + "; " + val) : "",
metadata.Location,
metadata.Rating,
metadata.Subject,
metadata.Title,
metadata.GetQuery("/xmp/photoshop:Instructions"),
metadata.GetQuery("/xmp/xmpRights:UsageTerms/x-default"),
metadata.GetQuery("/xmp/photoshop:Credit")
);
}
是否可以从代码中获取“版权状态”?这是在 Photoshop 中,我们可以在 Photoshop 中查看。
【问题讨论】:
-
这与
Copyright属性有何不同? -
Copyright 将拥有 ©Company 但状态有 3 个值 'Unknown'、'Copyrighted' 和 'public domain' controlledvocabulary.com/imagedatabases/…
-
This link 可能建议:
metadata.GetQuery("/xmp/xmpRights:Marked");(来自一些谷歌搜索,false = 公共领域,true = 受版权保护,null = 未知) -
感谢它只给出我认为不正确的真或假。我想我需要比较 3 个版权状态不同的图像。
-
我认为您必须手动读取 EXIF 数据才能做到这一点。在这种情况下,请参阅stackoverflow.com/questions/58649/…
标签: c# metadata jpeg photoshop xmp