public void Select(SemWeb.StatementSink sink) { byte [] data = null; ImageDirectory props = Root.ReadDirectory(Tag.ImageProps); ImageDirectory camera = props.ReadDirectory(Tag.CameraObject); data = props.ReadEntry(Tag.TimeStamp); if (data != null) { MetadataStore.AddLiteral(sink, "xmp:CreateDate", new CaptureTime(data, little).ToString()); } data = props.ReadEntry(Tag.ImageSpec); if (data != null) { ImageSpec spec = new ImageSpec(data, little); MetadataStore.AddLiteral(sink, "tiff:Orientation", ((int)spec.Orientation).ToString()); MetadataStore.AddLiteral(sink, "tiff:ImageWidth", spec.ImageWidth.ToString()); MetadataStore.AddLiteral(sink, "tiff:ImageLength", spec.ImageHeight.ToString()); string comp = spec.ComponentBitDepth.ToString(); if (spec.IsColor) { MetadataStore.Add(sink, "tiff:BitsPerSample", "rdf:Seq", new string [] { comp, comp, comp }); } else { MetadataStore.Add(sink, "tiff:BitsPerSample", "rdf:Seq", new string [] { comp }); } if (!spec.HasSquarePixels) { MetadataStore.AddLiteral(sink, "tiff:XResolution", (1000000 * spec.PixelAspectRatio).ToString()); MetadataStore.AddLiteral(sink, "tiff:YResolution", (1000000 * (1 / spec.PixelAspectRatio)).ToString()); } } data = camera.ReadEntry(Tag.CanonRawMakeModel); if (data != null) { string make_model = System.Text.Encoding.ASCII.GetString(data, 0, data.Length - 1); string [] vals = make_model.Split(new char [] { '\0' }); MetadataStore.AddLiteral(sink, "tiff:Make", vals [0]); MetadataStore.AddLiteral(sink, "tiff:Model", vals [1]); } /* * // FIXME this doesn't appear to be ascii. * data = camera.ReadEntry (Tag.OwnerName); * if (data != null) { * string name = System.Text.Encoding.ASCII.GetString (data, 0, data.Length - 1); * MetadataStore.AddLiteral (sink, "dc:creator", "rdf:Seq", new SemWeb.Literal (name)); * } */ }
public void Select(StatementSink sink) { using (Stream stream = Open()) { Header header = new Header(stream); MetadataStore.AddLiteral(sink, "tiff:ImageWidth", header.Width.ToString()); MetadataStore.AddLiteral(sink, "tiff:ImageLength", header.Height.ToString()); string bits = header.IsDeep ? "16" : "8"; MetadataStore.Add(sink, "tiff:BitsPerSample", "rdf:Seq", new string [] { bits, bits, bits }); } }
public void Select(SemWeb.StatementSink sink) { Entity keywords = null; foreach (DataSet data in sets) { switch (data.ID) { case DataSetID.CopyrightNotice: MetadataStore.AddLiteral(sink, "dc:rights", "rdf:Alt", new Literal(data.XmpObject, "x-default", null)); break; case DataSetID.ByLine: MetadataStore.AddLiteral(sink, "dc:creator", "rdf:Seq", new Literal(data.XmpObject, "x-default", null)); break; case DataSetID.CaptionAbstract: MetadataStore.AddLiteral(sink, "dc:description", "rdf:Alt", new Literal(data.XmpObject, "x-default", null)); break; case DataSetID.ObjectName: MetadataStore.AddLiteral(sink, "dc:title", "rdf:Alt", new Literal(data.XmpObject, "x-default", null)); break; case DataSetID.Keywords: if (keywords == null) { keywords = new BNode(); sink.Add(new Statement(MetadataStore.FSpotXMPBase, MetadataStore.Namespaces.Resolve("dc:subject"), keywords)); sink.Add(new Statement(keywords, (Entity)MetadataStore.Namespaces.Resolve("rdf:type"), (Entity)MetadataStore.Namespaces.Resolve("rdf:Bag"))); } sink.Add(new Statement(keywords, MetadataStore.Namespaces.Resolve("rdf:li"), new Literal(data.XmpObject, "x-default", null))); break; default: if (data.XmpPredicate != null) { sink.Add(new Statement(MetadataStore.FSpotXMPBase, (Entity)data.XmpPredicate, new Literal(data.XmpObject))); } break; } } }
public void Select(StatementSink sink) { MetadataStore.AddLiteral(sink, "tiff:Orientation", ((int)Info.Orientation).ToString()); MetadataStore.AddLiteral(sink, "tiff:ImageWidth", Info.Width.ToString()); MetadataStore.AddLiteral(sink, "tiff:ImageLength", Info.Height.ToString()); }