public bool CreateImagePreview(string mediaId) { bool result = false; string photoNamePreview = ImagePathManager.GetMediaFilename(mediaId, MediaObjectTypeEnum.Image, true); string pathToOriginal = ImagePathManager.GetImagePath(mediaId, MediaObjectTypeEnum.Image, false); string pathToPreview = ImagePathManager.GetImagePath(mediaId, MediaObjectTypeEnum.Image, true); try { byte[] originalByteArray = readFileToByteArray(pathToOriginal); if (originalByteArray.Length > 0) { ImagePreviewManager previewManager = new ImagePreviewManager(); var mediaService = DependencyService.Get <IMediaService>(); byte[] imgPreviewByteArray = previewManager.GetPreviewImage(mediaService, originalByteArray, _width, _height, _quality); File.WriteAllBytes(pathToPreview, imgPreviewByteArray); result = true; } } catch (Exception e) { Crashes.TrackError(e, new Dictionary <string, string> { { "MediaId", "ImgPreview" }, { mediaId, photoNamePreview } }); } return(result); }
public void TryDeleteFile(string routePointMediaObjectId, MediaObjectTypeEnum mediaType, bool isPreview = false) { string filename = ImagePathManager.GetImagePath(routePointMediaObjectId, mediaType, isPreview); if (File.Exists(filename)) { try { File.Delete(filename); } catch (Exception e) { HandleError.Process("RoutePointMediaObjectManager", "TryDeleteFile", e, false); } } }
internal void UpdateMetadata(string pathToImageDirectory) { var startDate = DateTime.Now; int countFiles = 0; var files = _cacheManager.LocalFilesByDays(_dateBegin, _dateEnd, pathToImageDirectory); foreach (var currentFile in files) { if (!currentFile.Processed) { _imageManager.SetPreviewImageQuality(ImageQualityType.MiddleSizeHiQuality); var currentMetadata = _imageManager.GetPhoto(currentFile.Id, Path.Combine(currentFile.SourcePath, currentFile.SourceFileName)); if (currentMetadata.getMetadataPhotoResult) { currentFile.Latitude = currentMetadata.imageGpsCoordinates.Latitude; currentFile.Longitude = currentMetadata.imageGpsCoordinates.Longitude; currentFile.ImagePreviewFileName = ImagePathManager.GetImagePath(currentFile.Id, LocalDB.Model.MediaObjectTypeEnum.Image, true); } currentFile.Processed = true; _cacheManager.Save(currentFile); if (countFiles % 10 == 0) { Xamarin.Forms.MessagingCenter.Send <CurrentProgressIndexMessage>(new CurrentProgressIndexMessage() { Index = countFiles }, string.Empty); } countFiles++; } } var delay = DateTime.Now - startDate; Analytics.TrackEvent("ImagesCacheDb:Update metadata", new Dictionary <string, string> { { "delay", delay.ToString() }, { "dateBegin", _dateBegin.ToString(DateTimeFormatInfo.InvariantInfo) }, { "dateEnd", _dateEnd.ToString(DateTimeFormatInfo.InvariantInfo) }, { "countFiles", files.Count().ToString() } }); }