我在理解(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)];
}
}
答案 0 :(得分:0)
此代码的用途是将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倍。
答案 1 :(得分:0)
代码片段有点奇怪,因为它默认情况下i和j不均匀 - 它可能是有意的但看起来像一个bug。 看起来新像素试图获得旧像素的中心四分之一,但由于奇数索引,每个像素将被采样两次
如果旧像素是:
GOARCH
新像素将是
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D
A A B B C C D D