我在理解(imageptt->h / 4) + (i / 2)的作用时遇到了很大的问题:

 for(int i= 0; i < imageptt->h; i++)
 {
     for(int j = 0; j < imageptt->w; j++)
     {
        pixels[i][j] = old[(imageptt->h / 4) + (i / 2)]
                                     [(imageptt->w  / 4) + (j / 2)];
     }
 }

最佳答案

该代码似乎要做的是将new_pixels设置为old_pixels的中央四分之一,并按比例放大到相同的大小。

例如,如果old_pixels为:

ABCDEFGH
IHJKLMNO
PQRSTUVW
XYZabcde
fghijklm
nopqrstu
vwxyz012
3456789*


然后new_pixels将设置为

RRSSTTUU
RRSSTTUU
ZZaabbcc
ZZaabbcc
hhiijjkk
hhiijjkk
ppqqrrss
ppqqrrss


(假设在图像的行上有一个外部循环)。

(image_ptr->height / 4)(image_ptr->width / 4)添加到索引开始从垂直和水平方向1/4的偏移量读取到old_pixels中。将(i / 2)(j / 2)分开将图像放大2倍。

08-19 20:29