Как изменить размер ширины и высоты изображения - C#

Узнай цену своей работы

Формулировка задачи:

Как изменить размер ширины и высоты изображения ? Изображение хранится в Bitmap, загружает пользователь сам... Например загруженная картинка имеет разрешение 2880x1180 Как её изменить на 800x600 ?

Решение задачи: «Как изменить размер ширины и высоты изображения»

textual
Листинг программы
  1.        
  2. public void Resize(int newWidth, int newHeight) // изменение размера
  3.         {
  4.             if (newWidth != 0 && newHeight != 0)
  5.             {
  6.                 Bitmap temp = (Bitmap)pictureBox2.Image;
  7.                 Bitmap bmap = new Bitmap(newWidth, newHeight, temp.PixelFormat);
  8.  
  9.                 double nWidthFactor = (double)temp.Width / (double)newWidth;
  10.                 double nHeightFactor = (double)temp.Height / (double)newHeight;
  11.  
  12.                 double fx, fy, nx, ny;
  13.                 int cx, cy, fr_x, fr_y;
  14.                 Color color1 = new Color();
  15.                 Color color2 = new Color();
  16.                 Color color3 = new Color();
  17.                 Color color4 = new Color();
  18.                 byte nRed, nGreen, nBlue;
  19.  
  20.                 byte bp1, bp2;
  21.  
  22.                 for (int x = 0; x < bmap.Width; ++x)
  23.                 {
  24.                     for (int y = 0; y < bmap.Height; ++y)
  25.                     {
  26.  
  27.                         fr_x = (int)Math.Floor(x * nWidthFactor);
  28.                         fr_y = (int)Math.Floor(y * nHeightFactor);
  29.                         cx = fr_x + 1;
  30.                         if (cx >= temp.Width) cx = fr_x;
  31.                         cy = fr_y + 1;
  32.                         if (cy >= temp.Height) cy = fr_y;
  33.                         fx = x * nWidthFactor - fr_x;
  34.                         fy = y * nHeightFactor - fr_y;
  35.                         nx = 1.0 - fx;
  36.                         ny = 1.0 - fy;
  37.  
  38.                         color1 = temp.GetPixel(fr_x, fr_y);
  39.                         color2 = temp.GetPixel(cx, fr_y);
  40.                         color3 = temp.GetPixel(fr_x, cy);
  41.                         color4 = temp.GetPixel(cx, cy);
  42.  
  43.                         // Blue
  44.                         bp1 = (byte)(nx * color1.B + fx * color2.B);
  45.  
  46.                         bp2 = (byte)(nx * color3.B + fx * color4.B);
  47.  
  48.                         nBlue = (byte)(ny * (double)(bp1) + fy * (double)(bp2));
  49.  
  50.                         // Green
  51.                         bp1 = (byte)(nx * color1.G + fx * color2.G);
  52.  
  53.                         bp2 = (byte)(nx * color3.G + fx * color4.G);
  54.  
  55.                         nGreen = (byte)(ny * (double)(bp1) + fy * (double)(bp2));
  56.  
  57.                         // Red
  58.                         bp1 = (byte)(nx * color1.R + fx * color2.R);
  59.  
  60.                         bp2 = (byte)(nx * color3.R + fx * color4.R);
  61.  
  62.                         nRed = (byte)(ny * (double)(bp1) + fy * (double)(bp2));
  63.  
  64.                         bmap.SetPixel(x, y, System.Drawing.Color.FromArgb(255, nRed, nGreen, nBlue));
  65.                     }
  66.                 }
  67.                 pictureBox2.Image = bmap;
  68.             }
  69.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы