Ejemplo n.º 1
0
 public static OptimizeUploadWaitRequest ThatHasAutoOrientOn(this OptimizeUploadWaitRequest optimizeUploadWaitRequest)
 {
     return(new OptimizeUploadWaitRequest
     {
         AutoOrient = true
     });
 }
Ejemplo n.º 2
0
 public static OptimizeUploadWaitRequest ThatHasLossyWebPAndSamplingScheme(this OptimizeUploadWaitRequest optimizeUploadWaitRequest)
 {
     return(new OptimizeUploadWaitRequest
     {
         Lossy = true,
         WebP = true,
         SamplingScheme = SamplingScheme.S444
     });
 }
Ejemplo n.º 3
0
        public async Task <IApiResponse <OptimizeWaitResult> > Optimize(string imagePath)
        {
            var options = new OptimizeUploadWaitRequest()
            {
                Lossy = true
            };
            var task = client.OptimizeWait(imagePath, options);

            return(await task);
        }
Ejemplo n.º 4
0
 public static OptimizeUploadWaitRequest ThatHasResizeOptions(this OptimizeUploadWaitRequest optimizeUploadWaitRequest)
 {
     return(new OptimizeUploadWaitRequest
     {
         ResizeImage = new ResizeImage {
             Height = 100, Width = 100
         },
         WebP = true
     });
 }
Ejemplo n.º 5
0
        /// <inheritdoc />
        public override Stream Process(FileProcessorInput fileInput)
        {
            if (fileInput == null)
            {
                throw new ArgumentException("fileInput cannot be null");
            }

            byte[] imageBytes = this.GetByteArray(fileInput.FileStream);
            string imageName  = Guid.NewGuid().ToString();

            OptimizeUploadWaitRequest optimizeUploadWaitRequest = new OptimizeUploadWaitRequest();

            optimizeUploadWaitRequest.Lossy = this.lossyCompression;

            if (this.preserveMetadata)
            {
                optimizeUploadWaitRequest.PreserveMeta = new PreserveMeta[] { PreserveMeta.Profile, PreserveMeta.Geotag, PreserveMeta.Date, PreserveMeta.Copyright, PreserveMeta.Orientation };
            }

            optimizeUploadWaitRequest.WebP = this.webpCompression;

            using (var timeoutCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(timeoutDurationInSeconds)))
            {
                try
                {
                    IApiResponse <OptimizeWaitResult> response = this.client.OptimizeWait(imageBytes, imageName, optimizeUploadWaitRequest, timeoutCancellationTokenSource.Token).Result;

                    if (!response.Success || response.StatusCode != HttpStatusCode.OK)
                    {
                        return(fileInput.FileStream);
                    }

                    Stream stream = this.GetImageStream(response.Body.KrakedUrl);

                    if (this.webpCompression)
                    {
                        fileInput.FileExtension = ".webp";
                        fileInput.MimeType      = "image/webp";
                    }

                    return(stream);
                }
                catch (TaskCanceledException)
                {
                    Log.Write("Image optimization has timed out. Default image stream was returned.", ConfigurationPolicy.ErrorLog);
                    return(fileInput.FileStream);
                }
                catch (Exception ex)
                {
                    Log.Write(ex, ConfigurationPolicy.ErrorLog);
                    return(fileInput.FileStream);
                }
            }
        }
Ejemplo n.º 6
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            Validation();

            var items = OptimizeImageItems;

            if (FilePath != null)
            {
                items = HelperFunctions.CreateOptimizeImageItems(FilePath).ToArray();
            }

            MessageAdapter adapter = CreateMessageAdapter(items.Count());

            Task.Factory.StartNew(() =>
            {
                for (int x = 0; x < items.Count(); x++)
                {
                    if (Wait)
                    {
                        var request = new OptimizeUploadWaitRequest(
                            CreateDataStore(items[x]))
                        {
                            WebP           = WebP,
                            Lossy          = Lossy,
                            AutoOrient     = AutoOrient,
                            SamplingScheme = HelperFunctions.ConvertSamplingScheme(SamplingScheme)
                        };

                        var task = Client.OptimizeWait(items[x].Path, request);
                        adapter.WriteObject(task.Result);
                    }
                    else
                    {
                        var request = new OptimizeUploadRequest(new Uri(CallBackUrl),
                                                                CreateDataStore(items[x]))
                        {
                            WebP           = WebP,
                            Lossy          = Lossy,
                            AutoOrient     = AutoOrient,
                            SamplingScheme = HelperFunctions.ConvertSamplingScheme(SamplingScheme)
                        };

                        var task = Client.Optimize(items[x].Path, request);
                        adapter.WriteObject(task.Result);
                    }
                }
                adapter.Finished = true;
            });
            adapter.Listen();
        }
Ejemplo n.º 7
0
 public static OptimizeUploadWaitRequest ThatInitialOptimizeUploadWaitRequest(this OptimizeUploadWaitRequest optimizeUploadWaitRequest)
 {
     return(new OptimizeUploadWaitRequest());
 }
Ejemplo n.º 8
0
        public async Task <byte[]> OptimizeBytesAsync(byte[] original, string imageName, OptimizeUploadWaitRequest request)
        {
            System.Diagnostics.Trace.TraceInformation($"Sending optimization request for image `{imageName}`.");
            var response =
                await this.KrakenClient
                .OptimizeWait(original,
                              imageName,
                              request)
                .ConfigureAwait(false);

            if (!response.Success)
            {
                throw new InvalidOperationException($"Not able to optimize image `{imageName}`.  Error: `{response.Error}`.");
            }

            System.Diagnostics.Trace.TraceInformation($"Downloading optimized bytes for image `{imageName}`.");
            var optimizedBytes = await this.DownloaderClient.GetImageBytesAsync(response.Body.KrakedUrl).ConfigureAwait(false);

            System.Diagnostics.Trace.TraceInformation($"Downloaded optimized bytes for image `{imageName}`.  Unoptimized size: {original.Length} bytes, optimized size: {optimizedBytes.Length} bytes.");
            return(optimizedBytes);
        }
Ejemplo n.º 9
0
 public KrakenOptimizer(Client krakenClient, OptimizeUploadWaitRequest defaultRequestType, HttpClient downloaderClient)
 {
     this.KrakenClient       = krakenClient;
     this.DefaultRequestType = defaultRequestType;
     this.DownloaderClient   = downloaderClient;
 }