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

问题描述:

我有一张由我的iPod touch 4拍摄的720x960图像。在模拟器调用图像CGImageGetBytesPerRow()返回2880(720 * 4字节),这是我的预期。然而,在设备上,CGImageGetBytesPerRow()将返回3840,即沿着高度的“每行字节数”。有没有人知道为什么有不同的行为,即使我在CGImageGetBytesPerRow()上的图像在这两种情况下的宽度为720,高度为960?CGImageGetBytesPerRow()会在iOS模拟器和iOS设备上返回不同的值

在此先感谢。

每行的字节数可以是任何东西,只要它足以容纳图像边界,所以最好不要假定它将是适合图像的最小值。

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

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

考虑对某些特殊任务使用NSBitmapRepresention。