コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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.");
        }