/// <summary> /// Reads and writes complex EXIF tags /// </summary> private static void ProcessComplexExifTypes() { using (var jpegReader = new JpegReader("../../../../_Input/Chicago.jpg")) using (var jpegWriter = new JpegWriter("../../../../_Output/ProcessComplexExifTypes.jpg", 70)) { var exif = new Aurigma.GraphicsMill.Codecs.ExifDictionary(jpegReader.Exif); Object[] latitude = null; if (exif.Contains(ExifDictionary.GpsLatitude)) { latitude = exif.GetItemArray(ExifDictionary.GpsLatitude); latitude[0] = new UnsignedRational(113, 12); } else { // Alexandria, Virginia latitude = new Object[] { new UnsignedRational(38, 1), new UnsignedRational(48, 1), new UnsignedRational(17, 1) }; } exif.SetItemArray(ExifDictionary.GpsLatitude, latitude); var gpsVer = new Object[] { (byte)2, (byte)0, (byte)0, (byte)1 }; exif.SetItemArray(ExifDictionary.GpsVersionId, gpsVer); exif[Aurigma.GraphicsMill.Codecs.ExifDictionary.Software] = "Aurigma Graphics Mill"; jpegWriter.Exif = exif; Aurigma.GraphicsMill.Pipeline.Run(jpegReader + jpegWriter); } }
public void ModifyUnsignedRational() { string key = "Exif.Canon.0x0018"; UnsignedRational.Element[] data = new UnsignedRational.Element[2]; data[0].Nominator = 1; data[0].Denominator = 2; data[1].Nominator = 3; data[1].Denominator = 4; image[key] = new UnsignedRational(data); image.Save(); image.Dispose(); Image imageRead = new Image(imageFileName); UnsignedRational.Element[] readData = (imageRead[key] as UnsignedRational).Value; Assert.AreEqual(data, readData); }