Beispiel #1
0
        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());
        }
Beispiel #2
0
    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);
    }
Beispiel #3
0
        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++;
                }
            }
        }
Beispiel #4
0
    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++;
        }
    }