2013-10-24 1 views
0

Хорошо, ребята, я работаю над методом для увеличения файла BMP, но я немного запутался в том, как это сделать. Это, как я думаю, увеличить бы:увеличить bmp файл по n шкале

Допустим, у нас есть .bmp файл:

0 1 2 
3 4 5 

в 3x2 2D массив, так что давайте говорить, что мы хотим увеличить это изображение по шкале 2, то новое изображение будет выглядеть так:

0 0 1 1 2 2 
0 0 1 1 2 2 
3 3 4 4 5 5 
3 3 4 4 5 5 

Я прав об этом или работает по-другому?
Спасибо, мне просто нужно понять, как это работает, чтобы записать алгоритм.

ответ

1

Я в основном называем это изображение способ изменения размера: "грубой проклейки" или "масштабирование изображения"

  1. расчет размера:

    Оригинальный размер изображения: 3 х 2 пикселей (всего от 6 пикселей)

    если вы масштабируете высоту на 2 и ширину от 2

    Окончательный размер изображения: 6 х 4 пикселя (всего 24 пикселей)

  2. Реализация:

    вот пример:
    позволяет сказать: AA = 3, AB = 2, AC = 6 иБ.А. = 6, BB = 4, БК = 24 иScalex = 2, ScaleY = 2


int ptotal = AC; //or = AA * AB 

    for (pcount = 0; pcount < ptotal; ++pcount) 
    { 
     img_x = (pcount%(AA))*scaleX; 
     if ((pcount%(scaleX))==0) 
      img_y += scaleY; 
     set_rect_BMP(bmp,img_x,img_y,scaleX,scaleY,r,g,b); 
    } 

int set_rect_BMP(BMP* bmp, int x, int y, int w, int h, int r, int g, int b) { 

    int i, j; 
    for (i = y; i < h+y; ++i) 
    { 
     for (j = x; j < w+x; ++j) 
     { 
      BMP_SetPixelRGB(bmp, j, i, r, g, b); 
      //BMP_SetPixelRGB(bmp, the x coord, the y coord, red, green, blue); 
     } 
    } 
} 

Схема алгоритма:

enter image description here


далее

будет дано объяснение, если это необходимо;) видеть больше на википедии здесь: http://en.wikipedia.org/wiki/Image_scaling