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 { } } }
/// <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); }
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); }