/// <summary> /// Creates new ImageObject object from Image object /// </summary> /// <param name="Image">[In] Image object</param> /// <param name="Orientation">[In] Image orientation(see IMAGE_ORIENTATION enum)</param> /// <returns>Function returns standard error code(see FD_RESULT enum).</returns> public static ImageObject Create_ImageObject_fData(Bitmap Image, IMAGE_ORIENTATION Orientation = IMAGE_ORIENTATION.posLEFTTOP) { IntPtr tmpPtr = IntPtr.Zero; BitmapData BD = null; switch (Image.PixelFormat) { case System.Drawing.Imaging.PixelFormat.Format8bppIndexed: BD = Image.LockBits(new Rectangle(0, 0, Image.Width, Image.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, Image.PixelFormat); if (Image_CreateImageFromData(BD.Scan0, BD.Width, BD.Height, BD.Stride, IMAGE_FORMAT.fbmp8bppgrey, Orientation, ref tmpPtr) == FACE_DETECTION_RESULT.FD_RESULT_OK) { Image.UnlockBits(BD); return(new ImageObject(tmpPtr)); } else { Image.UnlockBits(BD); return(null); } case System.Drawing.Imaging.PixelFormat.Format24bppRgb: BD = Image.LockBits(new Rectangle(0, 0, Image.Width, Image.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, Image.PixelFormat); if (Image_CreateImageFromData(BD.Scan0, BD.Width, BD.Height, BD.Stride, IMAGE_FORMAT.fbmp24bppRGB, Orientation, ref tmpPtr) == FACE_DETECTION_RESULT.FD_RESULT_OK) { Image.UnlockBits(BD); return(new ImageObject(tmpPtr)); } else { Image.UnlockBits(BD); return(null); } case System.Drawing.Imaging.PixelFormat.Format32bppArgb: BD = Image.LockBits(new Rectangle(0, 0, Image.Width, Image.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, Image.PixelFormat); if (Image_CreateImageFromData(BD.Scan0, BD.Width, BD.Height, BD.Stride, IMAGE_FORMAT.fbmp32bppARGB, Orientation, ref tmpPtr) == FACE_DETECTION_RESULT.FD_RESULT_OK) { Image.UnlockBits(BD); return(new ImageObject(tmpPtr)); } else { Image.UnlockBits(BD); return(null); } default: return(null); } }
private static extern FACE_DETECTION_RESULT Image_CreateImageFromData(IntPtr Pixels, int Width, int Height, int Stride, IMAGE_FORMAT format, IMAGE_ORIENTATION orientation, ref IntPtr Imageptr);