下面的代碼是我的老師給我的。我只是不明白這是如何縮放bmp圖像。我知道關於bmp圖像的基礎知識(wikipedia上的信息)。我知道這種方法應該用任何比例乘以新圖像的行和列。我試圖手動運行代碼,但它讓我更加困惑。任何幫助都感激不盡。謝謝!不明白這段代碼是如何縮放bmp圖像的
int enlarge(PIXEL* original, int rows, int cols, int scale,
PIXEL** new, int* newrows, int* newcols)
{
//scaling the new rows & cols
*newcols = cols * scale;
*newrows = rows * scale;
//memory allocated for enlaged bmp
*new = (PIXEL*)malloc(*newrows * *newcols * sizeof(PIXEL));
int row, col, sx, sy;
//transverse through every row
for (row = 0; row < rows; row++)
//transvere through every col
for (col = 0; col < cols; col++){
//im unsure what this is for
PIXEL* o = original + (row * cols) + col;
for(sy = 0; sy < scale; sy++)
for(sx = 0; sx < scale; sx++)
{
//im unsure what this is for
PIXEL* n = *new + (scale * row) * *newcols + (scale * col) + (sy * *newcols) + sx;
*n = *o;
}
}
return 0;
}
這是PIXEL的結構。
typedef struct {
unsigned char r;
unsigned char g;
unsigned char b;
} PIXEL;
有額外的代碼,但我不認爲這是需要這個問題。
內兩個環路填寫與像素的副本放大的版本的方通過'O'指向。 'o'只是您在所有像素上循環的上下文中的「當前像素」。 – harold
它在每個像素處做了什麼? – name