UIImage簡(jiǎn)談:[UIImage imageNamed:]與 [UIImage imageWithContentsOfFile]的區(qū)別

[UIImage imageNamed:]只適合與UI界面中小的貼圖的讀取愉烙,而一些比較大的資源文件應(yīng)該盡量避免使用這個(gè)接口。

直接讀取文件路徑[UIImage imageWithContentsOfFile]來(lái)解決圖片的讀取問(wèn)題

這兩種方式的主要區(qū)別在于:

imageName的方式會(huì)在使用的時(shí)候系統(tǒng)會(huì)cache,程序員是無(wú)法處理cache的走芋,這是由系統(tǒng)自動(dòng)處理的陈症,對(duì)于重復(fù)加載的圖像,速度會(huì)提升很多赖瞒,這樣反而用戶體驗(yàn)好女揭。所以如果某張圖片需要在應(yīng)用中使用多次,或者重復(fù)引用栏饮,使用imageName的方式會(huì)更好

imageWithContentsOfFile的方式吧兔,在使用完成之后系統(tǒng)會(huì)釋放,不會(huì)緩存下來(lái)袍嬉,所以也就沒有這樣的問(wèn)題境蔼。一般也不會(huì)把所有的圖片都會(huì)緩存。有些圖片在應(yīng)用中只使用一兩次的伺通,就可以用這樣的方式箍土,比如新手引導(dǎo)界面的圖片等等,就適合這樣的方式罐监。沒有明顯的界限吴藻。

imageWithContentsOfFile生成的UIImage會(huì)隨著path的文件內(nèi)容改變而改變,

比如你從相冊(cè)中選擇n張photo存入數(shù)組弓柱,如果你將得到的jpg命名為相同的xx.jpg沟堡, 然后用imageWithContentsOfFile存入數(shù)組,你的數(shù)組中的UIImage會(huì)不斷改變矢空。

CGImageRef轉(zhuǎn)換成UIImage ? ?

?CGImageRef iOffscreen = CGBitmapContextCreateImage(context);?

UIImage* image = [UIImage imageWithCGImage: iOffscreen];


UIImage轉(zhuǎn)換成CGImageRef

UIImage *loadImage = [UIImage imageNamed:@"comicsplash.png"];

CGImageRef cgimage=loadImage.CGImage;

CGImageRef?CGImageCreate(size_t?width,?size_t?height, size_t?bitsPerComponent,?size_t?bitsPerPixel,?size_t?bytesPerRow, CGColorSpaceRef?space,?CGBitmapInfo?bitmapInfo,?CGDataProviderRefprovider, const?CGFloat?decode[],?bool?shouldInterpolate, CGColorRenderingIntent?intent);

通過(guò)這個(gè)方法航罗,我們可以創(chuàng)建出一個(gè)CGImageRef類型的對(duì)象,下面分別對(duì)參數(shù)進(jìn)行解釋:sizt_t是定義的一個(gè)可移植性的單位妇多,在64位機(jī)器中為8字節(jié)伤哺,32位位4字節(jié)。

width:圖片寬度像素

height:圖片高度像素

bitsPerComponent:每個(gè)顏色的比特?cái)?shù),例如在rgba-32模式下為8

bitsPerPixel:每個(gè)像素的總比特?cái)?shù)

bytesPerRow:每一行占用的字節(jié)數(shù)立莉,注意這里的單位是字節(jié)

space:顏色空間模式绢彤,例如const?CFStringRef?kCGColorSpaceGenericRGB 這個(gè)函數(shù)可以返回一個(gè)顏色空間對(duì)象。

provider:數(shù)據(jù)源提供者

decode[]:解碼渲染數(shù)組

shouldInterpolate:是否抗鋸齒

intent:圖片相關(guān)參數(shù)

CGImageRef?CGImageMaskCreate(size_t?width,?size_t?height, size_t?bitsPerComponent,?size_t?bitsPerPixel,?size_t?bytesPerRow, CGDataProviderRef?provider,?const?CGFloat?decode[],?boolshouldInterpolate)

這個(gè)方法用于創(chuàng)建mask圖片圖層蜓耻,可以設(shè)置其顯示部分與不顯示部分達(dá)到特殊的效果茫舶,參數(shù)意義同上。

CGImageRef?CGImageCreateCopy(CGImageRef?image) ?這個(gè)方法可以復(fù)制一個(gè)CGImageRef對(duì)象

CGImageRef?CGImageCreateWithJPEGDataProvider(CGDataProviderRef source,?const?CGFloat?decode[],?bool?shouldInterpolate, CGColorRenderingIntent?intent)

通過(guò)JPEG數(shù)據(jù)源獲取圖像

CGImageRef?CGImageCreateWithPNGDataProvider(CGDataProviderRef?source,

?const?CGFloat?decode[],?bool?shouldInterpolate,

?CGColorRenderingIntent?intent)

通過(guò)PNG數(shù)據(jù)源獲取圖像

CGImageRef?CGImageCreateWithImageInRect(CGImageRef?image,

?CGRect?rect)

截取圖像的一個(gè)區(qū)域重繪圖像

CGImageRef?CGImageCreateWithMask(CGImageRef?image,?CGImageRef?mask)

截取mask圖像的某一區(qū)域重繪

CGImageRef?CGImageCreateWithMaskingColors(CGImageRef?image,

?const?CGFloat?components[])

通過(guò)顏色分量數(shù)組創(chuàng)建位圖

CGImageRef?CGImageCreateCopyWithColorSpace(CGImageRef?image,

?CGColorSpaceRef?space)

通過(guò)顏色空間模式復(fù)制位圖

CGImageRef?CGImageRetain(CGImageRef?image)

引用+1

void?CGImageRelease(CGImageRef?image)

引用-1

bool?CGImageIsMask(CGImageRef?image)

返回是否為Mask圖層

size_t?CGImageGetWidth(CGImageRef?image)

獲取寬度像素

size_t?CGImageGetHeight(CGImageRef?image)

獲取高度像素

下面這些方法分別獲取相應(yīng)屬性

size_t?CGImageGetBitsPerComponent(CGImageRef?image)

size_t?CGImageGetBitsPerPixel(CGImageRef?image)

size_t?CGImageGetBytesPerRow(CGImageRef?image)

CGColorSpaceRef?CGImageGetColorSpace(CGImageRef?image)CG_EXTERNCGImageAlphaInfo?CGImageGetAlphaInfo(CGImageRef?image)

CGDataProviderRef?CGImageGetDataProvider(CGImageRef?image)

const?CGFloat?*CGImageGetDecode(CGImageRef?image)

bool?CGImageGetShouldInterpolate(CGImageRef?image)

CGColorRenderingIntent?CGImageGetRenderingIntent(CGImageRef?image)

CGBitmapInfo?CGImageGetBitmapInfo(CGImageRef?image)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刹淌,一起剝皮案震驚了整個(gè)濱河市饶氏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌有勾,老刑警劉巖疹启,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔼卡,居然都是意外死亡喊崖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門雇逞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)荤懂,“玉大人,你說(shuō)我怎么就攤上這事塘砸〗诜拢” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵掉蔬,是天一觀的道長(zhǎng)廊宪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)女轿,這世上最難降的妖魔是什么挤忙? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谈喳,結(jié)果婚禮上册烈,老公的妹妹穿的比我還像新娘。我一直安慰自己婿禽,他們只是感情好赏僧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扭倾,像睡著了一般淀零。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膛壹,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天驾中,我揣著相機(jī)與錄音唉堪,去河邊找鬼。 笑死肩民,一個(gè)胖子當(dāng)著我的面吹牛唠亚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播持痰,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼灶搜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了工窍?” 一聲冷哼從身側(cè)響起割卖,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎患雏,沒想到半個(gè)月后鹏溯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淹仑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年剿涮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攻人。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悬槽,靈堂內(nèi)的尸體忽然破棺而出怀吻,到底是詐尸還是另有隱情,我是刑警寧澤初婆,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布蓬坡,位于F島的核電站,受9級(jí)特大地震影響磅叛,放射性物質(zhì)發(fā)生泄漏屑咳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一弊琴、第九天 我趴在偏房一處隱蔽的房頂上張望兆龙。 院中可真熱鬧,春花似錦敲董、人聲如沸紫皇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)聪铺。三九已至,卻和暖如春萄窜,著一層夾襖步出監(jiān)牢的瞬間铃剔,已是汗流浹背撒桨。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留键兜,地道東北人凤类。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蝶押,于是被迫代替她去往敵國(guó)和親踱蠢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容