从UIImage创建Leptonica PIX结构

时间:2012-08-03 17:04:31

标签: ios core-graphics

我想从UIImage创建一个PIX数据结构。 PIX的结构:

struct Pix
{
     l_uint32             w;           /* width in pixels                   */
     l_uint32             h;           /* height in pixels                  */
     l_uint32             d;           /* depth in bits                     */
     l_uint32             wpl;         /* 32-bit words/line                 */
     l_uint32             refcount;    /* reference count (1 if no clones)  */
     l_int32              xres;        /* image res (ppi) in x direction    */
                                       /* (use 0 if unknown)                */
     l_int32              yres;        /* image res (ppi) in y direction    */
                                       /* (use 0 if unknown)                */
     l_int32              informat;    /* input file format, IFF_*          */
     char                *text;        /* text string associated with pix   */
     struct PixColormap  *colormap;    /* colormap (may be null)            */
     l_uint32            *data;        /* the image data                    */
 };
 typedef struct Pix PIX;


struct PixColormap
 {
     void            *array;     /* colormap table (array of RGBA_QUAD)     */
     l_int32          depth;     /* of pix (1, 2, 4 or 8 bpp)               */
     l_int32          nalloc;    /* number of color entries allocated       */
     l_int32          n;         /* number of color entries used            */
};

我该如何在iOS中执行此操作?

2 个答案:

答案 0 :(得分:0)

您将从UIImage开始,然后使用“CGImage”从中获取CGImageRef。使用CGImageRef,您可以查询它的宽度,高度,深度,wpl(您将从图像中获取bytesPerRow,然后通过除以像素大小进行修改)。要获取将其呈现到上下文中所需的数据,请获取该点,然后将该数据复制到NSData对象中。大小将是bytesPerRow值的行数。

答案 1 :(得分:0)

您可以创建CGBitmapContext并将图像绘制到其中。您需要使用RGB颜色空间来创建上下文。您可能需要在kCGBitmapByteOrder32Little参数中试验kCGBitmapByteOrder32BigbitmapInfo,以便以正确的顺序获取R,G和B组件。

然后,您可以使用struct PixCGBitmapContextGetWidthCGBitmapContextGetBytesPerRow等功能初始化CGBitmapContextGetDataxresyresinformattextcolormap元素与CGBitmapContext或{{1}的任何属性都不对应,所以你应该把它们设置为0或NULL。

CGBitmapContext Reference查看UIImage的帮助。

另请查看Quartz 2D Programming Guide以获取有关创建位图上下文的帮助,以及有关将图像绘制到上下文中的帮助。