Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        // 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;
        }