public void Execute()
        {
            var files = Directory.GetFiles(SourceFolder, "*.jpg");
            foreach (var file in files)
            {
                try
                {
                    DateTime dt;
                    using (var em = new ExifManager(file))
                    {
                        dt = em.DateTimeOriginal;
                    }

                    if (dt == DateTime.MinValue) continue;

                    var fi = new FileInfo(file);
                    var newName = Path.Combine(DestinantionFolder,
                                               string.Format("{0}.jpg", dt.ToString("yyyy-MM-dd_HH.mm.ss")));
                    fi.MoveTo(newName);
                }
                catch
                {
                }
            }

        }
Beispiel #2
0
        /// <summary>
        /// 获取角度
        /// </summary>
        /// <param name="filepath">图片路径</param>
        /// <returns></returns>
        /// liuyicong 2017-01-17
        private int GetOrientation(string filepath)
        {
            ExifManager exif  = new ExifManager(filepath);
            int         orien = (int)exif.Orientation;

            exif.Dispose();
            return(orien);
        }
Beispiel #3
0
        private async void addPhotoAsync(object obj)
        {
            _vpoint.Version++;
            _vpoint.Save();
            bool b = await CrossMedia.Current.Initialize();

            if (CrossMedia.Current.IsPickPhotoSupported)
            {
                MediaFile photoPicked = null;

                PermissionManager permissions = new PermissionManager();
                if (await permissions.PermissionGrantedAsync(Plugin.Permissions.Abstractions.Permission.Photos, CommonResource.RoutePoint_RightNeedToPickPhoto))
                {
                    try
                    {
                        photoPicked = await CrossMedia.Current.PickPhotoAsync();
                    }
                    catch (Exception e)
                    {
                        photoPicked = null;
                        HandleError.Process("RoutePoint", "AddPhoto", e, false);
                    }
                }

                if (photoPicked != null)
                {
                    string imgPathDirectory = ImagePathManager.GetPicturesDirectory();
                    string mediaId          = Guid.NewGuid().ToString();
                    //используем метод создания превью для того, чтобы сделать основное фото из оригинального, но с уменьшенным качеством

                    ImagePreviewManager resizedOriginal = new ImagePreviewManager();
                    resizedOriginal.PreviewHeight  = 0;
                    resizedOriginal.PreviewWidth   = 0;
                    resizedOriginal.PreviewQuality = 40;
                    FileInfo originalFileInfo = new FileInfo(photoPicked.Path);

                    if (resizedOriginal.CreateImagePreview(originalFileInfo.DirectoryName, originalFileInfo.Name,
                                                           imgPathDirectory, ImagePathManager.GetMediaFilename(mediaId, MediaObjectTypeEnum.Image, false)))
                    {
                        ImagePreviewManager preview = new ImagePreviewManager();
                        if (preview.CreateImagePreview(originalFileInfo.DirectoryName, originalFileInfo.Name,
                                                       imgPathDirectory, ImagePathManager.GetMediaFilename(mediaId, MediaObjectTypeEnum.Image, true)))
                        {
                            ExifManager exif   = new ExifManager();
                            var         coords = exif.GetCoordinates(photoPicked.Path);
                            if ((coords.Latitude > 0 && coords.Longitude > 0) && await App.Current.MainPage.DisplayAlert(CommonResource.RoutePoint_GeotagsExists,
                                                                                                                         CommonResource.RoutePoint_UseGeotagsForPoint, CommonResource.CommonMsg_Yes, CommonResource.CommonMsg_No))
                            {
                                Latitude        = coords.Latitude;
                                Longitude       = coords.Longitude;
                                _vpoint.Address = string.Empty;
                                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Latitude"));
                                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Longitude"));
                                FillAddressByCoordinatesAsync(Latitude, Longitude);
                            }
                            _vpoint.AddMediaItem(mediaId, MediaObjectTypeEnum.Image);
                            ApplyChanges();
                            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Images"));
                            Analytics.TrackEvent("Media: photo added");
                        }
                        else
                        {
                            Analytics.TrackEvent("Media: add photo error create preview ", new Dictionary <string, string> {
                                { "mediaId", mediaId }
                            });
                        }
                    }
                    else
                    {
                        Analytics.TrackEvent("Media: error resize photo ", new Dictionary <string, string> {
                            { "mediaId", mediaId }
                        });
                    }
                }
            }
        }
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ExifManager obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }