示例#1
0
        /// <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);
            }
        }
示例#2
0
 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);