internal static ISettings GetSettings(IConfiguration configuration) { string sourceRoot = configuration.GetValue <string>("SourceRoot"); string destinationRootUrl = configuration.GetValue <string>("DestinationRootUrl"); string destinationRootPath = configuration.GetValue <string>("DestinationRootPath"); ILocation destinationRoot = new Location(new Uri(destinationRootUrl), destinationRootPath); IConfigurationSection rateLimiterConfig = configuration.GetSection("RateLimiter"); IRateLimiterSettings rateLimiterSettings = new RateLimiterSettings { Enabled = rateLimiterConfig.GetValue("Enabled", false), TimeWindowInMinutes = rateLimiterConfig.GetValue("TimeWindowInMinutes", 10), MaxRequestsInTimeWindow = rateLimiterConfig.GetValue("MaxRequestsInTimeWindow", 100), MaxBytesInTimeWindow = rateLimiterConfig.GetValue("MaxBytesInTimeWindow", 1024 * 1024 * 50), Whitelist = rateLimiterConfig.GetSection("Whitelist").GetChildren().ToList().Select(x => x.Value).ToArray(), Blacklist = rateLimiterConfig.GetSection("Blacklist").GetChildren().ToList().Select(x => x.Value).ToArray() }; IConfigurationSection loggerConfig = configuration.GetSection("Logger"); ILoggerSettings loggerSettings = new LoggerSettings { WriteInfo = loggerConfig.GetValue("WriteInfo", false), WriteWarnings = loggerConfig.GetValue("WriteWarnings", false), WriteErrors = loggerConfig.GetValue("WriteErrors", false), ToConsole = loggerConfig.GetValue("ToConsole", false), ToFile = loggerConfig.GetValue("ToFile", false), Directory = loggerConfig.GetValue("Directory", string.Empty) }; IConfigurationSection gifConfig = configuration.GetSection("GifSettings"); IGifSettings gifSettings = new GifSettings { PostProcessorEnabled = gifConfig.GetValue("PostProcessorEnabled", false), PostProcessorCommand = gifConfig.GetValue("PostProcessorCommand", string.Empty) }; IConfigurationSection jpegConfig = configuration.GetSection("JpegSettings"); IJpegSettings jpegSettings = new JpegSettings { Quality = jpegConfig.GetValue("Quality", 75), PostProcessorEnabled = jpegConfig.GetValue("PostProcessorEnabled", false), PostProcessorCommand = jpegConfig.GetValue("PostProcessorCommand", string.Empty) }; IConfigurationSection pngConfig = configuration.GetSection("PngSettings"); IPngSettings pngSettings = new PngSettings { CompressionLevel = pngConfig.GetValue("CompressionLevel", 6), PostProcessorEnabled = pngConfig.GetValue("PostProcessorEnabled", false), PostProcessorCommand = pngConfig.GetValue("PostProcessorCommand", string.Empty) }; Settings settings = new Settings(sourceRoot, destinationRoot, rateLimiterSettings, loggerSettings, gifSettings, jpegSettings, pngSettings); return(settings); }
/// <summary> /// Copies all Adobe resources including clipping path /// </summary> private static void CopyClippingPath() { using (var reader = new JpegReader("../../../../_Input/Apple.jpg")) using (var bitmap = reader.Frames[0].GetBitmap()) { var jpegSettings = new JpegSettings(); jpegSettings.AdobeResources = reader.AdobeResources; bitmap.Save("../../../../_Output/CopyClippingPath.jpg", jpegSettings); } }
/// <summary> /// Reads and writes image in JPEG format /// </summary> private static void ReadAndWriteJpeg() { using (var bitmap = new Bitmap("../../../../_Input/Chicago.jpg")) { bitmap.Transforms.Flip(FlipType.Vertical); var jpegSettings = new JpegSettings() { Quality = 90, UseSubsampling = false, IsProgressive = true }; bitmap.Save("../../../../_Output/ReadWriteJpeg.jpg", jpegSettings); } }
private string SaveHtmlToImage(string htmlsource, string exportedfile) { try { // let's configure image settings var jpegSettings = new JpegSettings(); jpegSettings.WindowSize = new Size(1443, 1100); jpegSettings.CompressionQuality = 100; // let's save HTML page to jpeg image using (var htmlRenderer = new GcHtmlRenderer(htmlsource)) { htmlRenderer.RenderToJpeg(exportedfile, jpegSettings); } return(exportedfile); } catch (Exception ex) { return(string.Empty); } }
/// <summary> /// Modifies clipping path explicitly /// </summary> private static void ModifyClippingPathExplicitly() { using (var reader = new JpegReader("../../../../_Input/Apple.jpg")) using (var bitmap = reader.Frames[0].GetBitmap()) { var crop = new Crop(20, 20, bitmap.Width - 40, bitmap.Height - 40); var cropped = crop.Apply(bitmap); var clippingPath = reader.ClippingPaths[0]; clippingPath.ApplyTransform(crop.GetPathTransformMatrix(bitmap.Width, bitmap.Height).ToGdiPlusMatrix()); var adobeResources = new AdobeResourceDictionary(); adobeResources.Add(FirstPathId, new AdobeResourceBlock("Apple", clippingPath.Data)); var jpegSettings = new JpegSettings(); jpegSettings.AdobeResources = adobeResources; cropped.Save("../../../../_Output/ModifyClippingPathExplicitly.jpg", jpegSettings); } }
public void TestFullConfiguration() { string sourceRoot = "source/root"; Location destinationRoot = new Location(new Uri("http://site.com/images"), "/var/www/site.com/images"); RateLimiterSettings rateLimiterSettings = new RateLimiterSettings(); rateLimiterSettings.Enabled = true; rateLimiterSettings.TimeWindowInMinutes = 42; rateLimiterSettings.MaxRequestsInTimeWindow = 1337; rateLimiterSettings.MaxBytesInTimeWindow = 1000000; rateLimiterSettings.Whitelist = new string[] { "1.3.3.7" }; rateLimiterSettings.Blacklist = new string[] { "6.6.6.666", "666.666.666.666" }; LoggerSettings loggerSettings = new LoggerSettings(); loggerSettings.WriteInfo = true; loggerSettings.WriteWarnings = true; loggerSettings.WriteErrors = true; loggerSettings.ToConsole = true; loggerSettings.ToFile = true; loggerSettings.Directory = "path/to/log"; GifSettings gifSettings = new GifSettings(); gifSettings.PostProcessorEnabled = true; gifSettings.PostProcessorCommand = "path/to/gifsicle some gifsicle args"; JpegSettings jpegSettings = new JpegSettings(); jpegSettings.Quality = 50; jpegSettings.PostProcessorEnabled = true; jpegSettings.PostProcessorCommand = "path/to/jpegtran some jpegtran args"; PngSettings pngSettings = new PngSettings(); pngSettings.CompressionLevel = 3; pngSettings.PostProcessorEnabled = true; pngSettings.PostProcessorCommand = "path/to/optipng some optipng args"; Settings settings = new Settings(sourceRoot, destinationRoot, rateLimiterSettings, loggerSettings, gifSettings, jpegSettings, pngSettings); Assert.True(settings.SourceRoot == sourceRoot); Assert.True(settings.DestinationRoot.AbsoluteUrl == destinationRoot.AbsoluteUrl); Assert.True(settings.DestinationRoot.AbsolutePath == destinationRoot.AbsolutePath); Assert.True(settings.RateLimiterSettings.Enabled == true); Assert.True(settings.RateLimiterSettings.TimeWindowInMinutes == 42); Assert.True(settings.RateLimiterSettings.MaxRequestsInTimeWindow == 1337); Assert.True(settings.RateLimiterSettings.MaxBytesInTimeWindow == 1000000); Assert.True(settings.RateLimiterSettings.Whitelist.Length == 1 && settings.RateLimiterSettings.Whitelist[0] == "1.3.3.7"); Assert.True(settings.RateLimiterSettings.Blacklist.Length == 2 && settings.RateLimiterSettings.Blacklist[0] == "6.6.6.666" && settings.RateLimiterSettings.Blacklist[1] == "666.666.666.666"); Assert.True(settings.LoggerSettings.WriteInfo == true); Assert.True(settings.LoggerSettings.WriteWarnings == true); Assert.True(settings.LoggerSettings.WriteErrors == true); Assert.True(settings.LoggerSettings.ToConsole == true); Assert.True(settings.LoggerSettings.ToFile == true); Assert.True(settings.LoggerSettings.Directory == "path/to/log"); Assert.True(settings.GifSettings.PostProcessorEnabled); Assert.True(settings.GifSettings.PostProcessorCommand == "path/to/gifsicle some gifsicle args"); Assert.True(settings.JpegSettings.Quality == 50); Assert.True(settings.JpegSettings.PostProcessorEnabled); Assert.True(settings.JpegSettings.PostProcessorCommand == "path/to/jpegtran some jpegtran args"); Assert.True(settings.PngSettings.CompressionLevel == 3); Assert.True(settings.PngSettings.PostProcessorEnabled); Assert.True(settings.PngSettings.PostProcessorCommand == "path/to/optipng some optipng args"); }