public ImageOptimizationResponse ProcessImage(ImageOptimizationRequest imageOptimizationRequest) { try { if (imageOptimizationRequest == null) { return(new ImageOptimizationResponse()); } var ParentAuth = new Auth { api_key = ImageOptimizationSettings.Instance.ApiKey, api_secret = ImageOptimizationSettings.Instance.ApiSecret }; string strimage_url = imageOptimizationRequest.ImageUrl; var krakenRequest = new KrakenRequest { auth = ParentAuth, url = strimage_url, wait = true, lossy = true }; KrakenResponse krakenResponse = this._krakenProxy.ProcessImage(krakenRequest); return(krakenResponse.ConvertToResponse()); }catch (Exception exception) { Debug.WriteLine(exception.ToString()); throw new Exception(exception.Message); } }
public ImageOptimizationResponse ProcessImage(ImageOptimizationRequest imageOptimizationRequest) { if (imageOptimizationRequest == null) { return(new ImageOptimizationResponse()); } var smushItRequest = new SmushItRequest { ImageUrl = imageOptimizationRequest.ImageUrl }; SmushItResponse smushItResponse = this._smushItProxy.ProcessImage(smushItRequest); return(smushItResponse.ConvertToResponse()); }
public override string Execute() { int count = 0; long totalBytesBefore = 0; long totalBytesAfter = 0; var contentRepository = ServiceLocator.Current.GetInstance <IContentRepository>(); var blobFactory = ServiceLocator.Current.GetInstance <BlobFactory>(); IEnumerable <ImageData> allImages = GetFolders(contentRepository).SelectMany(GetImageFiles).Distinct(); if (_stop) { return($"Job stopped after optimizing {count} images."); } if (!ImageOptimizationSettings.Instance.BypassPreviouslyOptimized) { allImages = FilterPreviouslyOptimizedImages(allImages); } foreach (ImageData image in allImages) { if (_stop) { return ($"Job completed after optimizing: {count} images. Before: {totalBytesBefore / 1024} KB, after: {totalBytesAfter / 1024} KB."); } if (!PublishedStateAssessor.IsPublished(image) || image.IsDeleted) { continue; } var imageOptimizationRequest = new ImageOptimizationRequest { ImageUrl = image.ContentLink.GetFriendlyUrl() }; ImageOptimizationResponse imageOptimizationResponse = this._imageOptimization.ProcessImage(imageOptimizationRequest); Identity logEntryId = this.AddLogEntry(imageOptimizationResponse, image); if (imageOptimizationResponse.Successful) { totalBytesBefore += imageOptimizationResponse.OriginalImageSize; if (imageOptimizationResponse.OptimizedImageSize > 0) { totalBytesAfter += imageOptimizationResponse.OptimizedImageSize; } else { totalBytesAfter += imageOptimizationResponse.OriginalImageSize; } if (image.CreateWritableClone() is ImageData file) { byte[] fileContent = imageOptimizationResponse.OptimizedImage; var blob = blobFactory.CreateBlob(file.BinaryDataContainer, MimeTypeHelper.GetDefaultExtension(file.MimeType)); blob.Write(new MemoryStream(fileContent)); file.BinaryData = blob; contentRepository.Save(file, SaveAction.Publish, AccessLevel.NoAccess); this.UpdateLogEntryToOptimized(logEntryId); count++; } } else { _logger.Error("ErrorMessage from SmushItProxy: " + imageOptimizationResponse.ErrorMessage); } } return ($"Job completed after optimizing: {count} images. Before: {totalBytesBefore / 1024} KB, after: {totalBytesAfter / 1024} KB."); }