0

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でこれを行うにはどうすればよいですか?

4

2 に答える 2

0

UIImage から始めて、「CGImage」を使用してそこから CGImageRef を取得します。CGImageRef を使用すると、幅、高さ、深さ、wpl を照会できます (画像から bytesPerRow として取得し、ピクセル サイズで割って変更します)。コンテキストにレンダリングするために必要なデータを取得するには、ポイントを取得してから、そのデータを NSData オブジェクトにコピーします。サイズは、bytesPerRow 値による行数になります。

于 2012-08-03T17:20:59.927 に答える
0

を作成し、CGBitmapContextその中にイメージを描画できます。コンテキストを作成するには、RGB カラー スペースを使用する必要があります。R、G、および B コンポーネントを正しい順序で取得するには、引数でkCGBitmapByteOrder32Littleとを試してみる必要がある場合があります。kCGBitmapByteOrder32BigbitmapInfo

次に、 、、 などのstruct Pix関数を使用して、そこから を初期化できます。、、、および要素はまたはのどの属性にも対応しないため、おそらく 0 または NULL に設定する必要があります。CGBitmapContextGetWidthCGBitmapContextGetBytesPerRowCGBitmapContextGetDataxresyresinformattextcolormapCGBitmapContextUIImage

のヘルプについては、CGBitmapContext リファレンスCGBitmapContextを参照してください。

また、ビットマップ コンテキストを作成するためのヘルプ、およびコンテキストに画像を描画するためのヘルプについては、 Quartz 2D プログラミング ガイドを参照してください。

于 2012-08-03T17:26:20.930 に答える