/// <summary> /// Make and return FSDK FaceImage from a <see cref="ImageBuffer"/> /// </summary> /// <param name="imageBuffer"></param> /// <param name="imageHandle"></param> /// <returns>Handle to newly created FSDK FaceImage</returns> public static int CreateFsdkImageHandle(this ImageBuffer imageBuffer, out int imageHandle) { imageHandle = -1; var buffer = new byte[imageBuffer.Buffer.Length]; int bpp = imageBuffer.BytesPerPixel; int bufferLength = imageBuffer.Buffer.Length; unsafe { fixed(byte *ob = imageBuffer.Buffer) fixed(byte *p = buffer) { for (int i = 0; i < bufferLength; i += bpp) { p[i] = ob[i + 2]; p[i + 1] = ob[i + 1]; p[i + 2] = ob[i]; p[i + 3] = ob[i + 3]; } } } int ret = FSDK.LoadImageFromBuffer(ref imageHandle, buffer, imageBuffer.Width, imageBuffer.Height, imageBuffer.Width * imageBuffer.BytesPerPixel, FsdkUtil.ImageModeFromBytesPerPixel(imageBuffer.BytesPerPixel)); return(ret); }