CGImageGetBytesPerRow()在iOS模拟器和iOS设备上返回不同的值

时间:2011-05-05 04:10:35

标签: iphone ios

我的ipod touch 4拍摄的照片是720x960。在模拟器中调用图像上的CGImageGetBytesPerRow()返回2880(720 * 4字节),这是我的预期。但是在设备上CGImageGetBytesPerRow()将返回3840,沿着高度的“每行字节数”。有谁知道为什么有不同的行为,即使我的CGImageGetBytesPerRow()图像在这两种情况下的宽度为720,高度为960?

提前致谢。

2 个答案:

答案 0 :(得分:1)

每行的字节数可以是任何值,只要它足以保持图像边界,因此最好不要假设它是最小的适合图像。

我猜在设备上,每行的字节数由某些或其他优化或硬件考虑决定:如果方向旋转,可能不需要更改图像缓冲区,或者图像传感器传输额外的字节数然后忽略每行的死数据,而不是每行最小字节数进行第二次传输到缓冲区,或者只有在我们知道这些设备的内部工作情况时才有意义的其他原因。

答案 1 :(得分:0)

可能会略有不同,因为内部内存分配:“内存中指定位图图像(或图像掩码)的每一行使用的字节数。”1

考虑将NSBitmapRepresention用于某些特殊任务。