public static OptimizeUploadWaitRequest ThatHasAutoOrientOn(this OptimizeUploadWaitRequest optimizeUploadWaitRequest) { return(new OptimizeUploadWaitRequest { AutoOrient = true }); }
public static OptimizeUploadWaitRequest ThatHasLossyWebPAndSamplingScheme(this OptimizeUploadWaitRequest optimizeUploadWaitRequest) { return(new OptimizeUploadWaitRequest { Lossy = true, WebP = true, SamplingScheme = SamplingScheme.S444 }); }
public async Task <IApiResponse <OptimizeWaitResult> > Optimize(string imagePath) { var options = new OptimizeUploadWaitRequest() { Lossy = true }; var task = client.OptimizeWait(imagePath, options); return(await task); }
public static OptimizeUploadWaitRequest ThatHasResizeOptions(this OptimizeUploadWaitRequest optimizeUploadWaitRequest) { return(new OptimizeUploadWaitRequest { ResizeImage = new ResizeImage { Height = 100, Width = 100 }, WebP = true }); }
/// <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); } } }
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(); }
public static OptimizeUploadWaitRequest ThatInitialOptimizeUploadWaitRequest(this OptimizeUploadWaitRequest optimizeUploadWaitRequest) { return(new OptimizeUploadWaitRequest()); }
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); }
public KrakenOptimizer(Client krakenClient, OptimizeUploadWaitRequest defaultRequestType, HttpClient downloaderClient) { this.KrakenClient = krakenClient; this.DefaultRequestType = defaultRequestType; this.DownloaderClient = downloaderClient; }