예제 #1
0
        public bool ProcessFile(PictureMetaData pmd)
        {
            if (pmd.ExifOriginalDateTime.HasValue)
            {
                string year = pmd.ExifOriginalDateTime.Value.Year.ToString();

                if (pmd.ListKeyword().Contains(year))
                {
                    return(false);
                }

                pmd.AddKeyword(year);
                return(true);
            }

            return(false);
        }
예제 #2
0
        public void UpdatePicture(PictureMetaData pmd)
        {
            if (pmd == null)
            {
                return;
            }

            if (headlineChecked)
            {
                pmd.IptcHeadline = Util.nullAsEmpty(headline);
            }
            if (captionChecked)
            {
                pmd.IptcCaption = Util.nullAsEmpty(caption);
            }
            if (objectNameChecked)
            {
                pmd.IptcObjectName = Util.nullAsEmpty(objectName);
            }
            if (copyrightChecked)
            {
                pmd.IptcCopyright = Util.nullAsEmpty(copyright);
            }
            if (cityChecked)
            {
                pmd.IptcCity = Util.nullAsEmpty(city);
            }
            if (sublocationChecked)
            {
                pmd.IptcSubLocation = Util.nullAsEmpty(sublocation);
            }
            if (provinceStateChecked)
            {
                pmd.IptcProvinceState = Util.nullAsEmpty(provinceState);
            }
            if (countryNameChecked)
            {
                pmd.IptcCountryName = Util.nullAsEmpty(countryName);
            }
            if (countryCodeChecked)
            {
                pmd.IptcCountryCode = Util.nullAsEmpty(countryCode);
            }

            if (authorChecked)
            {
                pmd.ClearByline();
                if (author != "")
                {
                    pmd.AddByline(author);
                }
            }
            if (writeChecked)
            {
                pmd.ClearWriter();
                if (writer != "")
                {
                    pmd.AddWriter(writer);
                }
            }
            if (contactChecked)
            {
                pmd.ClearContact();
                if (contact != "")
                {
                    pmd.AddContact(contact);
                }
            }

            if (createdChecked)
            {
                if (getDateFromExifChecked)
                {
                    pmd.IptcDateTimeCreated = pmd.ExifOriginalDateTime;
                }
                else
                {
                    if (created != DateTime.MinValue)
                    {
                        pmd.IptcDateTimeCreated = created;
                    }
                    else
                    {
                        pmd.IptcDateTimeCreated = null;
                    }
                }
            }

            if (keywordChecked)
            {
                List <string> allKeywords = pmd.ListKeyword();
                foreach (string s in keywordsChecked)
                {
                    if (!allKeywords.Contains(s))
                    {
                        pmd.AddKeyword(s);
                    }
                }
                foreach (string s in keywordsUnchecked)
                {
                    if (allKeywords.Contains(s))
                    {
                        pmd.RemoveKeyword(s);
                    }
                }
            }
        }
예제 #3
0
        public bool ProcessFile(PictureMetaData pmd)
        {
            string LensID;
            double FocalLength;
            double MaxAperture;

            try
            {
                LensID      = pmd.getStringAttribute(LENS_ID_TAG);
                FocalLength = toFloat(pmd.getStringAttribute(Exif.Photo.FOCALLENGTH));
                //MaxAperture = toFloat(pmd.getStringAttribute(Exif.Photo.MAXAPERTUREVALUE));
            }
            catch
            {
                return(false);
            }

            string lens = "";

            switch (LensID)
            {
            case "25501":
            case "26131":
                lens = "Minolta AF 50mm F1.7";
                break;

            case "25601":
                lens = "Minolta AF 100-200mm F4.5";
                break;

            case "128":
                lens = "Tamron AF 28-200mm F3.8-5.6";
                break;

            case "65535":
                lens = "Pentacon MF 200mm F4";
                break;

            case "24":
                lens = "Sigma AF 17-70mm F2.8-4.5";

                if (FocalLength > 70)
                {
                    lens = "Minolta AF 24-105mm F3.5-4.5 (D)";
                }
                break;
            }

//            Console.WriteLine(string.Format("{3}: {0} - {1} - {2}",LensID,FocalLength,MaxAperture,lens));

            if (lens == "")
            {
                return(false);
            }

            if (pmd.ListKeyword().Contains(lens))
            {
                return(false);
            }

            pmd.AddKeyword(lens);

            return(true);
        }
예제 #4
0
        //model
        private bool SaveToPicture(PictureMetaData pic, bool commit)
        {
            if (updateCaption.Checked)
            {
                pic.IptcCaption = this.txtCaption.Text;
                Settings.Default.Captions.AddIfGrowing(this.txtCaption.Text);
            }

            bool updateAnyLocation = false;

            if (updateCity.Checked)
            {
                pic.IptcCity      = this.txtCity.Text;
                updateAnyLocation = true;
            }
            if (updateCountryCode.Checked)
            {
                pic.IptcCountryCode = this.txtContryCode.Text;
                updateAnyLocation   = true;
            }
            if (updateCountryName.Checked)
            {
                pic.IptcCountryName = this.txtContryName.Text;
                updateAnyLocation   = true;
            }
            if (updateState.Checked)
            {
                pic.IptcProvinceState = this.txtProvinceState.Text;
                updateAnyLocation     = true;
            }
            if (updateSublocation.Checked)
            {
                pic.IptcSubLocation = this.txtSublocation.Text;
                updateAnyLocation   = true;
            }
            if (updateAnyLocation)
            {
                Location l = new Location();
                l.City        = this.txtCity.Text;
                l.Sublocation = this.txtSublocation.Text;
                l.State       = this.txtProvinceState.Text;
                l.CountryName = this.txtContryName.Text;
                l.CountryCode = this.txtContryCode.Text;
                Settings.Default.Locations.AddIfGrowing(l);
            }

            if (updateCopyright.Checked)
            {
                pic.IptcCopyright = this.txtCopyright.Text;
                Settings.Default.Copyrights.AddIfGrowing(this.txtCopyright.Text);
            }

            if (updateHeadline.Checked)
            {
                pic.IptcHeadline = this.txtHeadline.Text;
                Settings.Default.Headlines.AddIfGrowing(this.txtHeadline.Text);
            }

            if (updateObjectName.Checked)
            {
                pic.IptcObjectName = this.txtObjectName.Text;
                Settings.Default.Objectnames.AddIfGrowing(this.txtObjectName.Text);
            }

            if (updateAuthor.Checked)
            {
                pic.ClearByline();
                pic.AddByline(this.txtAuthorByline.Text);
                Settings.Default.Authors.AddIfGrowing(this.txtAuthorByline.Text);
            }
            if (updateContact.Checked)
            {
                pic.ClearContact();
                pic.AddContact(this.txtContact.Text);
                Settings.Default.Contacts.AddIfGrowing(this.txtContact.Text);
            }
            if (updateWriter.Checked)
            {
                pic.ClearWriter();
                pic.AddWriter(this.txtWriter.Text);
                Settings.Default.Writers.AddIfGrowing(this.txtWriter.Text);
            }

            if (updateDateCreated.Checked)
            {
                if (chkCreatedFromExif.Checked)
                {
                    DateTime?d = pic.ExifOriginalDateTime;
                    if (d.HasValue)
                    {
                        pic.IptcDateTimeCreated = d.Value;
                    }
                }
                else
                {
                    DateTime datePart = this.dateCreated.Value;
                    DateTime timePart = this.timeCreated.Value;

                    datePart = datePart.AddHours(-datePart.Hour);
                    datePart = datePart.AddMinutes(-datePart.Minute);
                    datePart = datePart.AddSeconds(-datePart.Second);

                    datePart = datePart.AddHours(timePart.Hour);
                    datePart = datePart.AddMinutes(timePart.Minute);
                    datePart = datePart.AddSeconds(timePart.Second);

                    pic.IptcDateTimeCreated = datePart;
                }
            }

            if (updateKeywords.Checked)
            {
                List <string> keywords = pic.ListKeyword();
                foreach (ThreeStateTreeNode groupNode in this.treeKeywords.Nodes)
                {
                    foreach (ThreeStateTreeNode node in groupNode.Nodes)
                    {
                        string nodeKeyword   = node.Text;
                        string nodeGroup     = node.Parent.Text;
                        bool   picHasKeyword = keywords.Contains(nodeKeyword);

                        if (node.CheckState == CheckState.Checked)
                        {
                            Settings.Default.GroupedKeywords.AddIfGrowing(nodeKeyword, nodeGroup);
                        }

                        if (node.CheckState == CheckState.Indeterminate)
                        {
                            continue;
                        }

                        if (node.CheckState == CheckState.Unchecked &&
                            !picHasKeyword)
                        {
                            continue;
                        }

                        if (node.CheckState == CheckState.Checked &&
                            picHasKeyword)
                        {
                            continue;
                        }


                        if (node.CheckState == CheckState.Unchecked &&
                            picHasKeyword)
                        {
                            pic.RemoveKeyword(nodeKeyword);
                        }

                        if (node.CheckState == CheckState.Checked &&
                            !picHasKeyword)
                        {
                            pic.AddKeyword(nodeKeyword);
                        }
                    }
                }
            }

            if (Settings.Default.RemoveThumbnailOrientation)
            {
                if (pic.ExifThumbnailOrientation != pic.ExifImageOrientation)
                {
                    pic.RemoveExifThumbnailOrientation();
                }
            }

            if (commit)
            {
                if (!pic.SaveChanges())
                {
                    return(this.ShowFileVanishedMsg(pic.Filename));
                }
            }

            return(true);
        }