2009-10-01 8 views

ответ

1

Следующая ссылка может помочь вам :)

snippets.dzone.com/posts/show/4336

Update: Код в ссылке выше физически изменяет и сохраняет изображение, если ваше намерение состоит в том, чтобы изменить размер файла изображения в целях экономии места , иначе, как уже упоминалось, вы можете просто установить высоту/ширину в элементе управления изображением.

0

Если вы загружаете изображение, вы можете просто установить свойства Width/Height.

например.

Bitmap bmp = new Bitmap(@"c:\myfile.bmp"); 
bmp.Width = (int)(bmp.Width/2); 
bmp.Height = (int)(bmp.Height/2); 
0

загрузить его в gdi + (system.drawing) и масштаб?

-2

Из моего личного кода галереи. В любом случае, немного старый.

protected Image FixedSize(Image imgPhoto, int Width, int Height) 
{ 
    int width = imgPhoto.Width; 
    int height = imgPhoto.Height; 
    int x = 0; 
    int y = 0; 
    int num5 = 0; 
    int num6 = 0; 
    float num7 = 0f; 
    float num8 = 0f; 
    float num9 = 0f; 
    num8 = ((float) Width)/((float) width); 
    num9 = ((float) Height)/((float) height); 
    if (num9 < num8) 
    { 
     num7 = num9; 
     num5 = Convert.ToInt16((float) ((Width - (width * num7))/2f)); 
    } 
    else 
    { 
     num7 = num8; 
     num6 = Convert.ToInt16((float) ((Height - (height * num7))/2f)); 
    } 
    int num10 = (int) (width * num7); 
    int num11 = (int) (height * num7); 
    Bitmap image = new Bitmap(Width, Height, PixelFormat.Format24bppRgb); 
    image.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); 
    Graphics graphics = Graphics.FromImage(image); 
    graphics.Clear(ColorTranslator.FromHtml("#ffffff")); 
    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    graphics.DrawImage(imgPhoto, new Rectangle(num5, num6, num10, num11), new Rectangle(x, y, width, height), GraphicsUnit.Pixel); 
    graphics.Dispose(); 
    return image; 
} 
+1

-1: num1, num2, num3, ... num11. Без обид, но выбор имен переменных читается, как код целенаправленно запутывается. – Juliet

+0

Это серьезный код WTF: имена переменных, Convert.ToInt16, ColorTranslators.FromHtml. Я воздержусь от голосования, потому что, по крайней мере, вы получили право InterpolationMode. – MusiGenesis

+0

Kidooosss ... этот код от .NET Reflector. У меня есть идея копирования-вставки. Намерение состоит в том, чтобы показать только логику. рейтинг ... ваш выбор. :-) – NinethSense

0

В additiona к тому, что говорят другие, для изображений меньше, чем 300x300, Image.GetThumbnailImage очень удобно:

static void Main(string[] args) 
{ 
    Bitmap b = new Bitmap(@"C:\Documents and Settings\juliet\My Documents\My Pictures\julietawesome.bmp"); 
    Image image = b.GetThumbnailImage(100, 100, null, IntPtr.Zero); 
    image.Save(@"C:\Documents and Settings\juliet\My Documents\My Pictures\thumbnail.bmp", ImageFormat.Bmp); 
} 
0

Поскольку никто еще не сказал, что это: попробуйте WPF.

0
Public Function ScaleByPercent(ByVal imgPhoto As Image, ByVal Percent As Integer) As Image 

     Dim nPercent As Single = (CType(Percent, Single)/100) 
     Dim sourceWidth As Integer = imgPhoto.Width 
     Dim sourceHeight As Integer = imgPhoto.Height 
     Dim sourceX As Integer = 0 
     Dim sourceY As Integer = 0 

     Dim destX As Integer = 0 
     Dim destY As Integer = 0 
     Dim destWidth As Integer = CType((sourceWidth * nPercent), Integer) 
     Dim destHeight As Integer = CType((sourceHeight * nPercent), Integer) 

     Dim bmPhoto As New Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb) 
     bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution) 

     Dim grPhoto As Graphics = Graphics.FromImage(bmPhoto) 
     grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic 
     grPhoto.DrawImage(imgPhoto, New Rectangle(destX, destY, destWidth, destHeight), New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel) 
     grPhoto.Dispose() 
     Return bmPhoto 

    End Function 
+0

Имейте в виду, что алгоритм изменения размера GDI будет производить посредственные результаты при существенных изменениях размера изображения. Я написал аналогичный код в прошлом, а затем переключился на стороннюю библиотеку, чтобы получить более качественный алгоритм изменения размера. – ScottS

Смежные вопросы