private void _btnOk_Click(object sender, System.EventArgs e) { ImageWidth = (int)_numWidth.Value; ImageHeight = (int)_numHeight.Value; if (_rbButtonNormal.Checked) { Flags = RasterSizeFlags.None; } else if (_rbButtonFavorBlack.Checked) { Flags = RasterSizeFlags.FavorBlack; } else if (_rbButtonResample.Checked) { Flags = RasterSizeFlags.Resample; } else if (_rbButtonFavorBlackOrResample.Checked) { Flags = RasterSizeFlags.FavorBlack | RasterSizeFlags.Resample; } else if (_rbButtonBicubic.Checked) { Flags = RasterSizeFlags.Bicubic; } else if (_rbButtonFavorBlackOrBicubic.Checked) { Flags = RasterSizeFlags.FavorBlack | RasterSizeFlags.Bicubic; } _initialFlags = Flags; }
private void ResizeDialog_Load(object sender, System.EventArgs e) { Flags = _initialFlags; _numWidth.Value = ImageWidth; _numHeight.Value = ImageHeight; switch (Flags) { case RasterSizeFlags.FavorBlack: _rbButtonFavorBlack.Checked = true; break; case RasterSizeFlags.Resample: _rbButtonResample.Checked = true; break; case RasterSizeFlags.FavorBlack | RasterSizeFlags.Resample: _rbButtonFavorBlackOrResample.Checked = true; break; case RasterSizeFlags.Bicubic: _rbButtonBicubic.Checked = true; break; case RasterSizeFlags.Bicubic | RasterSizeFlags.FavorBlack: _rbButtonFavorBlackOrBicubic.Checked = true; break; default: _rbButtonNormal.Checked = true; break; } }
private void _btnOk_Click(object sender, System.EventArgs e) { // Set the new values for the selected RasterSizeFlags flags and apply to the loaded image. ImageWidth = (int)_numWidth.Value; ImageHeight = (int)_numHeight.Value; if (_rbButtonNormal.Checked) { Flags = RasterSizeFlags.None; } else if (_rbButtonFavorBlack.Checked) { Flags = RasterSizeFlags.FavorBlack; } else if (_rbButtonResample.Checked) { Flags = RasterSizeFlags.Resample; } else if (_rbButtonFavorBlackOrResample.Checked) { Flags = RasterSizeFlags.FavorBlack | RasterSizeFlags.Resample; } else if (_rbButtonBicubic.Checked) { Flags = RasterSizeFlags.Bicubic; } else if (_rbButtonFavorBlackOrBicubic.Checked) { Flags = RasterSizeFlags.FavorBlack | RasterSizeFlags.Bicubic; } _initialFlags = Flags; }
// Optionally resizes the image before saving it (always preserving the original aspect ratio) public static void ResizeImage(RasterImage image, int width, int height) { SizeCommand sizeCommand; int resizeWidth; int resizeHeight; RasterSizeFlags flags = RasterSizeFlags.Resample; if (image.BitsPerPixel == 1) { flags |= RasterSizeFlags.FavorBlack; } // First check if its a FAX image (with different resolution), if so, resize it too if (image.XResolution != 0 && image.YResolution != 0 && Math.Abs(image.XResolution - image.YResolution) > 2) { // Yes if (image.XResolution > image.YResolution) { resizeWidth = image.ImageWidth; resizeHeight = (int)((double)image.ImageHeight * (double)image.XResolution / (double)image.YResolution); } else { resizeHeight = image.ImageHeight; resizeWidth = (int)((double)image.ImageWidth * (double)image.YResolution / (double)image.XResolution); } sizeCommand = new SizeCommand(resizeWidth, resizeHeight, flags); sizeCommand.Run(image); image.XResolution = Math.Max(image.XResolution, image.YResolution); image.YResolution = image.XResolution; } // Check user resize options, and resize only if needed if ((width == 0 && height == 0) || (image.ImageWidth <= width && image.ImageHeight <= height)) { return; } resizeWidth = width; resizeHeight = height; // If width or height is 0, means the other is a fixed value and the missing value must be calculated // saving the aspect ratio if (resizeHeight == 0) { resizeHeight = (int)((double)image.ImageHeight * (double)resizeWidth / (double)image.ImageWidth + 0.5); } else if (resizeWidth == 0) { resizeWidth = (int)((double)image.ImageWidth * (double)resizeHeight / (double)image.ImageHeight + 0.5); } // Calculate the destination size LeadRect rc = new LeadRect(0, 0, resizeWidth, resizeHeight); rc = RasterImage.CalculatePaintModeRectangle( image.ImageWidth, image.ImageHeight, rc, RasterPaintSizeMode.Fit, RasterPaintAlignMode.Near, RasterPaintAlignMode.Near); image.ChangeViewPerspective(RasterViewPerspective.TopLeft); sizeCommand = new SizeCommand(rc.Width, rc.Height, flags); sizeCommand.Run(image); // Note, if the image was 1BPP, ScaleToGray converts it to 8, the format of the returned image is dealt with // in PrepareToSave // Since we resized the image, the original DPI is not correct anymore image.XResolution = 96; image.YResolution = 96; }