private void SetExifData() { // GPS version var image = Image; var exif = new ExifWorks.ExifWorks(ref image); // center coordinate var center = new LongLat(); foreach (var corner in Document.GetMapCornersLongLat()) { center += corner / 4; } var ver = new byte[] { 2, 2, 0, 0 }; var longitudeRef = new byte[] { Convert.ToByte(center.Longitude < 0 ? 'W' : 'E'), 0 }; var longitude = ExifUtil.GetExifGpsCoordinate(center.Longitude); var latitudeRef = new byte[] { Convert.ToByte(center.Latitude < 0 ? 'S' : 'N'), 0 }; var latitude = ExifUtil.GetExifGpsCoordinate(center.Latitude); exif.SetProperty((int)ExifWorks.ExifWorks.TagNames.GpsVer, ver, ExifWorks.ExifWorks.ExifDataTypes.UnsignedLong); exif.SetProperty((int)ExifWorks.ExifWorks.TagNames.GpsLongitudeRef, longitudeRef, ExifWorks.ExifWorks.ExifDataTypes.AsciiString); exif.SetProperty((int)ExifWorks.ExifWorks.TagNames.GpsLongitude, longitude, ExifWorks.ExifWorks.ExifDataTypes.UnsignedRational); exif.SetProperty((int)ExifWorks.ExifWorks.TagNames.GpsLatitudeRef, latitudeRef, ExifWorks.ExifWorks.ExifDataTypes.AsciiString); exif.SetProperty((int)ExifWorks.ExifWorks.TagNames.GpsLatitude, latitude, ExifWorks.ExifWorks.ExifDataTypes.UnsignedRational); if (Properties.EncodingInfo.Encoder.MimeType == "image/jpeg") { exif.SetProperty((int)ExifWorks.ExifWorks.TagNames.JPEGQuality, new byte[] { (byte)(100 * ((JpegEncodingInfo)Properties.EncodingInfo).Quality) }, ExifWorks.ExifWorks.ExifDataTypes.UnsignedByte); } exif.SetPropertyString((int)ExifWorks.ExifWorks.TagNames.SoftwareUsed, Strings.QuickRoute + " " + Document.GetVersionString()); }
bool MakeExifNode(TreeIter parent, TreeIter iter, ExifData ed, ExifTag tag) { string val = ed.Lookup(tag); if (val == null || val == "") { return(false); } MakeNode(parent, out iter, ExifUtil.GetTagTitle(tag) + ":", ed.Lookup(tag)); return(true); }
private void CopyFilesProcess() { DirectoryInfo dir = new DirectoryInfo(txtInput.Text); ExifMap em = new ExifMap(); Bitmap bmp; ExifUtil eu; FileInfo imgFile; Dictionary <string, FileInfo> correctOrder = new Dictionary <string, FileInfo>(); ImageCodecInfo jpegCodec = getEncoderInfo("image/jpeg"); EncoderParameter qualityParam = new EncoderParameter(Encoder.Quality, (long)90); EncoderParameters jpegQuality = new EncoderParameters(1); jpegQuality.Param[0] = qualityParam; if (dir.Exists) { FileInfo[] processFiles = dir.GetFiles("*.jpg"); _maxFiles = processFiles.Length; _currentFile = 0; _status = "Sorting images by creation date..."; foreach (FileInfo file in processFiles) { bmp = new Bitmap(file.FullName); eu = new ExifUtil(ref bmp, "\n"); correctOrder.Add(String.Format("{0:yyyy-MM-dd_HH-mm-ss}_{1}", eu.DateTimeTaken, file.Name), file); _currentFile++; } _currentFile = 0; _status = "Resizing images to output folder..."; foreach (string fileName in correctOrder.Keys) { imgFile = correctOrder[fileName]; bmp = new Bitmap(imgFile.FullName); bmp = ResizeWidthCropHeight(bmp, _imgWidth, _imgHeight); bmp.Save(String.Format(@"{0}\{1}", txtOutput.Text, fileName), jpegCodec, jpegQuality); _currentFile++; } } }
void PopulateDetails(out TreeIter parent) { store.Append(out parent); store.SetValue(parent, 0, new GLib.Value("<b>Details</b>")); store.SetValue(parent, 1, new GLib.Value("")); det_values = Enum.GetValues(typeof(ExifTag)); det_iter = new TreeIter [det_values.Length]; int i = 0; TreeIter iter = new TreeIter(); foreach (object v in det_values) { MakeNode(parent, out iter, ExifUtil.GetTagTitle((ExifTag)v) + ":"); det_iter [i] = iter; i++; } }