ios - Objective-C 中的 for 循环

标签 ios objective-c arrays loops image-processing

对于一个基本问题表示歉意。我检查了 for 循环 herehere例如,如果我们分析第一个代码:

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=5pixelBytes[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/

相关文章:

objective-c - 子类化 NSScrollView drawRect : Method

objective-c - dipatch_async 释放局部变量

Java 使用数组比 C++ 中的 std::vector 快 8 倍。我做错了什么?

ios - 如何减慢程序向服务器发出请求?

ios - 链接器错误断言失败 : (atom->fixupCount() == 1)

objective-c - 在插入符号位置将文本插入 UITextField

php - 排序具有指定键值的数组 PHP

Java:如何在没有重复的情况下随机化数组列表

iOS 应用商店拒绝 : Privacy Policy URL

ios - Swift - 在带有部分和源的 TableView 上更新/添加/删除项目