Изменить размер растрового изображения, как в MS Paint - PullRequest
3 голосов
/ 06 декабря 2009

Мне нужно изменить размер BMP, как это работает в MS Paint - то есть без сглаживания. Кто-нибудь знает, как это сделать в c # или vb.net?

Ответы [ 6 ]

2 голосов
/ 06 декабря 2009

Вы можете использовать метод Image.GetThumbnailImage. Я не знаю об этом сглаживании.

РЕДАКТИРОВАТЬ : Я думал о миниатюрных изображениях, так как недавно использовал это в проекте. Но вы просто просите изменить размеры в целом. Этот метод может не привести к хорошему качеству большого изменения размера.

http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage.aspx

1 голос
/ 06 декабря 2009

Вы можете установить режим графической интерполяции для ближайшего соседа, а затем использовать drawimage, чтобы изменить его размер без сглаживания. (простите мой vb :-))

Dim img As Image = Image.FromFile("c:\jpg\1.jpg")
Dim g As Graphics

pic1.Image = New Bitmap(180, 180, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
g = Graphics.FromImage(pic1.Image)
g.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
g.DrawImage(img, 0, 0, pic1.Image.Width, pic1.Image.Height)
1 голос
/ 06 декабря 2009

Как скопировать изображения из MSDN.

Краска просто обрезает изображение, не так ли? В примерах на этой странице есть инструменты для того, что вам нужно.

1 голос
/ 06 декабря 2009
0 голосов
/ 21 апреля 2010
    // ********************************************** ScaleBitmap

    /// <summary>
    /// Scale a bitmap by a scale factor, growing or shrinking 
    /// both axes, maintaining the aspect ratio
    /// </summary>
    /// <param name="inputBmp">
    /// Bitmap to scale
    /// </param>
    /// <param name="scale_factor">
    /// Factor by which to scale
    /// </param>
    /// <returns>
    /// New bitmap containing the original image, scaled by the 
    /// scale factor
    /// </returns>
    /// <citation>
    /// A Bitmap Manipulation Class With Support For Format 
    /// Conversion, Bitmap Retrieval from a URL, Overlays, etc.,
    /// Adam Nelson, The Code Project, September 2003.
    /// </citation>

    private Bitmap ScaleBitmap ( Bitmap  bitmap,
                                 float   scale_factor )
        {
        Graphics    g = null;
        Bitmap      new_bitmap = null;
        Rectangle   rectangle;

        int  height = ( int ) ( ( float ) bitmap.Size.Height *
                                scale_factor );
        int  width = ( int ) ( ( float ) bitmap.Size.Width *
                               scale_factor );
        new_bitmap = new Bitmap ( width,
                                  height,
                                  PixelFormat.Format24bppRgb );

        g = Graphics.FromImage ( ( Image ) new_bitmap );
        g.InterpolationMode = InterpolationMode.High;
        g.ScaleTransform ( scale_factor, scale_factor );

        rectangle = new Rectangle ( 0,
                                    0,
                                    bitmap.Size.Width,
                                    bitmap.Size.Height );
        g.DrawImage ( bitmap,
                      rectangle,
                      rectangle,
                      GraphicsUnit.Pixel );
        g.Dispose ( );

        return ( new_bitmap );
        }
0 голосов
/ 06 декабря 2009

@ Роберт - Paint.Net недавно вышел из закрытого источника из-за ребрендинга и перепродажи. Однако более старые версии (3.36) все еще имеют открытый исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...