为什么我的图像的每行字节数多于每像素字节数的宽度?

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

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像素*每像素4字节=每行1200字节)

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

思考?

系统喜欢图像是每行64个字节的倍数,大概是为了更好的性能,由于高速caching行alignment。 1200不是64的倍数,而是1216。