我想从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中执行此操作?
答案 0 :(得分:0)
您将从UIImage开始,然后使用“CGImage”从中获取CGImageRef。使用CGImageRef,您可以查询它的宽度,高度,深度,wpl(您将从图像中获取bytesPerRow,然后通过除以像素大小进行修改)。要获取将其呈现到上下文中所需的数据,请获取该点,然后将该数据复制到NSData对象中。大小将是bytesPerRow值的行数。
答案 1 :(得分:0)
您可以创建CGBitmapContext
并将图像绘制到其中。您需要使用RGB颜色空间来创建上下文。您可能需要在kCGBitmapByteOrder32Little
参数中试验kCGBitmapByteOrder32Big
和bitmapInfo
,以便以正确的顺序获取R,G和B组件。
然后,您可以使用struct Pix
,CGBitmapContextGetWidth
和CGBitmapContextGetBytesPerRow
等功能初始化CGBitmapContextGetData
。 xres
,yres
,informat
,text
和colormap
元素与CGBitmapContext
或{{1}的任何属性都不对应,所以你应该把它们设置为0或NULL。
请CGBitmapContext Reference查看UIImage
的帮助。
另请查看Quartz 2D Programming Guide以获取有关创建位图上下文的帮助,以及有关将图像绘制到上下文中的帮助。