// -------------------------------------------------------------------------------------------------------------------- // // Copyright (c) James South. // Licensed under the Apache License, Version 2.0. // // // The program. // // -------------------------------------------------------------------------------------------------------------------- namespace ImageProcessorConsole { using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using ImageProcessor; using ImageProcessor.Plugins.Cair; /// /// The program. /// public class Program { /// /// The main routine. /// /// /// The args. /// public static void Main(string[] args) { string path = new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).LocalPath; // ReSharper disable once AssignNullToNotNullAttribute string resolvedPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(path), @"..\..\images\input")); DirectoryInfo di = new DirectoryInfo(resolvedPath); if (!di.Exists) { di.Create(); } IEnumerable files = GetFilesByExtensions(di, ".jpg"); //IEnumerable files = GetFilesByExtensions(di, ".gif", ".webp", ".bmp", ".jpg", ".png"); foreach (FileInfo fileInfo in files) { byte[] photoBytes = File.ReadAllBytes(fileInfo.FullName); // ImageProcessor using (MemoryStream inStream = new MemoryStream(photoBytes)) { using (ImageFactory imageFactory = new ImageFactory(true)) { Size size = new Size(800, 0); // Load, resize, set the format and quality and save an image. imageFactory.Load(inStream) //.BackgroundColor(Color.White) //.Resize(new Size((int)(size.Width * 1.1), 0)) .ContentAwareResize(size) //.Constrain(size) .Save(Path.GetFullPath(Path.Combine(Path.GetDirectoryName(path), @"..\..\images\output", fileInfo.Name))); } } } } public static IEnumerable GetFilesByExtensions(DirectoryInfo dir, params string[] extensions) { if (extensions == null) { throw new ArgumentNullException("extensions"); } IEnumerable files = dir.EnumerateFiles(); return files.Where(f => extensions.Contains(f.Extension, StringComparer.OrdinalIgnoreCase)); } } }