为什么我的图像的每行字节数超过其每像素的字节数乘以其宽度?

时间:2013-04-10 19:48:03

标签: ios video uiimage cgimage

我正在将图像转换为MOV文件,并且有一件有趣的事情发生在我身上。我记录了每个颜色分量的位数,每个像素的位数和每行的字节数。这是我的代码:

NSLog(@"Image width: %d, Height: %d", CGImageGetWidth(image), CGImageGetHeight(image));
NSLog(@"BPC: %d \ BPP: %d \ ByPR: %d", CGImageGetBitsPerComponent(image), CGImageGetBitsPerPixel(image), CGImageGetBytesPerRow(image));

这是我的输出:

图像宽度:300,高度:300(一切都符合预期) BPC:8(每种颜色8位......到目前为止一直很好) BPP:32(32 = 4个组件ARGB *每颜色8位......得到它) ByPR:1216(每行300 px *每像素4字节=每行1200字节)

为什么我每行记录1216个字节,而不是1200?顺便说一句,这不仅仅是一个侥幸。当我根据缓冲区大小的数字创建视频时,它可以工作。当我用每行1200字节创建它时,我得到一些混乱的混叠效果。

思想?!

1 个答案:

答案 0 :(得分:20)

系统喜欢图像是每行64字节的倍数,可能是因为缓存行对齐而获得更好的性能。 1200不是64的倍数,但是1216是。