对于一个基本问题表示歉意。我检查了 for
循环 here和 here例如,如果我们分析第一个代码:
for(int i = 0; i < CFDataGetLength(pixelData); i += 4) {
pixelBytes[i] // red
pixelBytes[i+1] // green
pixelBytes[i+2] // blue
pixelBytes[i+3] // alpha
}
变量 i
从 0 递增到数组 pixelData
的长度,步长为 4。
但是 pixelBytes[i+3]
如何访问图像的 alpha channel ?例如,如果 i=5
,pixelBytes[5+3]
如何等于 alpha channel 而不是仅仅访问 pixelBytes
的第 8 个元素?
最佳答案
如果 i
从零开始,每次递增 4,它怎么可能等于 5?
据推测,该结构存储为每个 channel 占用一个字节,首先是红色,然后是绿色,然后是蓝色,然后是 alpha,然后是红色,依此类推。 for
循环通过每次将 i
递增四来模仿这种结构,因此如果第一次通过 pixelBytes[i+1]
是第一个绿色值,第二次通过它将在四个字节后,因此是第二个绿色值。
关于ios - Objective-C 中的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113819/