public static void ResizeFile(FileResizeItem item) { // Input file name: var inputfile = item.SourceFile.FullName; // Determine target file name: var targetFile = DetermineTargetFile(item.SourceFile, item.TargetFile, item.TargetWidth, item.TargetHeight); // Skip file if already exists: if (item.Overwrite == false && File.Exists(targetFile)) return; // Configure JPEG encoding: var jpegEncoder = GetCodecInfo(ImageFormat.Jpeg); var jpegEncoderParameters = new EncoderParameters(1); jpegEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Convert.ToInt64(item.Quality * 100)); using (var image = new Bitmap(inputfile)) { // Define new image sizes: var targetSize = new Size(item.TargetWidth, item.TargetHeight); var destinationImageSize = image.Size.Resize(targetSize, item.ResizeMode, item.OrientationMode); var destinationFileSize = destinationImageSize; var cropSize = new Size(0, 0); // Perform cropping: if (item.ResizeMode == ResizeMode.BoxFitsInCropped) { destinationFileSize = targetSize; cropSize = new Size((destinationImageSize.Width - destinationFileSize.Width) / 2, (destinationImageSize.Height - destinationFileSize.Height) / 2); } // Perform resizing: using (var result = ResizeImage(image, destinationFileSize.Width, destinationFileSize.Height, destinationImageSize.Width, destinationImageSize.Height, cropSize.Width, cropSize.Height)) { // Copy metadata if requested to keep: if (item.KeepMetaData) { PropertyItem orientationProperty = null; foreach (var prop in image.PropertyItems) { if (prop.Id == 0x112) { orientationProperty = prop; } result.SetPropertyItem(prop); } if (item.AutoRotate && orientationProperty != null && orientationProperty.Value[0] != 1) { result.RotateFlip(OrientationToFlipType(orientationProperty.Value[0])); orientationProperty.Value[0] = 1; result.SetPropertyItem(orientationProperty); } } // Save image: EnsurePathExists(new FileInfo(targetFile).Directory); result.Save(targetFile, jpegEncoder, jpegEncoderParameters); } } }
public static void ResizeFile(FileResizeItem item) { // Input file name: var inputfile = item.SourceFile.FullName; // Determine target file name: var targetFile = DetermineTargetFile(item.SourceFile, item.TargetFile, item.TargetWidth, item.TargetHeight); // Skip file if already exists: if (item.Overwrite == false && File.Exists(targetFile)) { return; } // Configure JPEG encoding: var jpegEncoder = GetCodecInfo(ImageFormat.Jpeg); var jpegEncoderParameters = new EncoderParameters(1); jpegEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Convert.ToInt64(item.Quality * 100)); using (var image = new Bitmap(inputfile)) { // Define new image sizes: var targetSize = new Size(item.TargetWidth, item.TargetHeight); var destinationImageSize = image.Size.Resize(targetSize, item.ResizeMode, item.OrientationMode); var destinationFileSize = destinationImageSize; var cropSize = new Size(0, 0); // Perform cropping: if (item.ResizeMode == ResizeMode.BoxFitsInCropped) { destinationFileSize = targetSize; cropSize = new Size((destinationImageSize.Width - destinationFileSize.Width) / 2, (destinationImageSize.Height - destinationFileSize.Height) / 2); } // Perform resizing: using (var result = ResizeImage(image, destinationFileSize.Width, destinationFileSize.Height, destinationImageSize.Width, destinationImageSize.Height, cropSize.Width, cropSize.Height)) { // Copy metadata if requested to keep: if (item.KeepMetaData) { PropertyItem orientationProperty = null; foreach (var prop in image.PropertyItems) { if (prop.Id == 0x112) { orientationProperty = prop; } result.SetPropertyItem(prop); } if (item.AutoRotate && orientationProperty != null && orientationProperty.Value[0] != 1) { result.RotateFlip(OrientationToFlipType(orientationProperty.Value[0])); orientationProperty.Value[0] = 1; result.SetPropertyItem(orientationProperty); } } // Save image: EnsurePathExists(new FileInfo(targetFile).Directory); result.Save(targetFile, jpegEncoder, jpegEncoderParameters); } } }
public void Enqueue(FileResizeItem item) { this.ImageQueue.Enqueue(item); }
public void Enqueue(FileResizeItem item) { this.ImageQueue.Enqueue(item); }