我需要将我的位图从kCVPixelFormatType_32BGRA的普通相机格式转换为kCVPixelFormatType_24RGB格式,以便它可以被第三方库使用。
如何做到这一点?
我的c#代码看起来像是直接使用字节数据:
byte[] sourceBytes = UIImageTransformations.BytesFromImage(sourceImage);
// final source is to be RGB
byte[] finalBytes = new byte[(int)(sourceBytes.Length * .75)];
int length = sourceBytes.Length;
int finalByte = 0;
for (int i = 0; i < length; i += 4)
{
byte blue = sourceBytes[i];
byte green = sourceBytes[i + 1];
byte red = sourceBytes[i + 2];
finalBytes[finalByte] = red;
finalBytes[finalByte + 1] = green;
finalBytes[finalByte + 2] = blue;
finalByte += 3;
}
UIImage finalImage = UIImageTransformations.ImageFromBytes(finalBytes);
但是,我发现我的sourceBytes长度并不总是被4整除,这对我没有任何意义。