iOS 取得CGimage位元組資料的方法

2022-03-20 11:13:03 字數 1504 閱讀 2454

通過我在網上搜尋和總結,目前看來,我發現兩種比較方便的方式。

1. cgimage -> cgdataprovider -> cfdata -> xx *

cgdataproviderref provider =cgimagegetdataprovider(cgimage);

void*data =(void*)cfdatagetbyteptr(cgdataprovidercopydata(provider));

這樣得到的就是void*型別的資料.

2. cgimage -> cgcontext -> void *

int swidth=cgimagegetwidth(cgimage);

int sheight=cgimagegetheight(cgimage);

cgimageref mcontent =cgimage;

cgcontextref context =cgbitmapcontextcreate(null,cgimagegetwidth(mcontent),cgimagegetheight(mcontent),

cgimagegetbitspercomponent(mcontent),cgimagegetbytesperrow(mcontent),

cgimagegetcolorspace(mcontent),cgimagegetbitmapinfo(mcontent));

cgcontextdrawimage(context,cgrectmake(

0,0, swidth, sheight), mcontent);

void*data=cgbitmapcontextgetdata(context);

當得到cgimage的位元組資料,有時又需要把它轉化成uiimage.

void*data;

cgdataproviderref pv=cgdataprovidercreatewithdata(data, data, swidth*sheight*4

,contentreleasecallback);

cgimageref content=cgimagecreate(swidth , sheight,8,32,4*swidth,

cgcolorspacecreatedevicergb(), kcgbitmapbyteorder32big |kcgimagealphanoneskiplast,

pv, null,

true

, kcgrenderingintentdefault);

uiimage*ci =[uiimage imagewithcgimage:content];

以上一套方法,能正常顯示影象,只是在alpha的值上和原圖有些不一樣轉成位元組資料再轉換成uiimage以後,原本是透明的部分變成了黑色

uiimage *ci = [uiimage imagewithdata:[nsdata datawithbytes:data length:swidth*sheight*4]];

iOS 取得CGimage位元組資料的方法

posted on july 12,2012 by luckyhu 一直沒在sdk的api中發現有比較簡便直觀的取得cgimage位元組資料的方法,自己曾經在這上面來來去去花了不少時間,有時實現了,但沒有做相關總結,下次使用時又忘記,又重新搗鼓一遍,浪費經歷和時間。通過我在網上搜尋和總結,目前看來,...

iOS 取得CGimage位元組資料的方法

通過我在網上搜尋和總結,目前看來,我發現兩種比較方便的方式。1.cgimage cgdataprovider cfdata xx cgdataproviderref provider cgimagegetdataprovider cgimage void data void cfdatagetbyt...

各變數位元組數

win64,也就是x64編譯配置下 char 1位元組 short 2位元組 int 4位元組 long 4位元組 long long 8位元組 float 4位元組 double 8位元組 long double 8位元組 wchar t 2位元組 bool 1位元組 指標都是8位元組 char ...