iOS--博文收藏

強(qiáng)烈推薦閱讀大神博客--談?wù)?iOS 中圖片的解壓縮

知識(shí)點(diǎn):

位圖:位圖就是一個(gè)像素?cái)?shù)組,數(shù)組中的每個(gè)像素就代表著圖片中的一個(gè)點(diǎn)。我們?cè)趹?yīng)用中經(jīng)常用到的 JPEG 和 PNG 圖片就是位圖。

以30*30像素的圖片為例:
解壓縮后的圖片大小 = 圖片的像素寬 30 * 圖片的像素高 30 * 每個(gè)像素所占的字節(jié)數(shù) 4

不管是 JPEG 還是 PNG 圖片,都是一種壓縮的位圖圖形格式。
只不過(guò) PNG 圖片是無(wú)損壓縮,并且支持 alpha 通道,而 JPEG 圖片則是有損壓縮,可以指定 0-100% 的壓縮比。值得一提的是,在蘋果的 SDK 中專門提供了兩個(gè)函數(shù)用來(lái)生成 PNG 和 JPEG 圖片:

// return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format
UIKIT_EXTERN NSData * __nullable UIImagePNGRepresentation(UIImage * __nonnull image);

// return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)                           
UIKIT_EXTERN NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality);

在將磁盤中的圖片渲染到屏幕之前,必須先要得到圖片的原始像素?cái)?shù)據(jù),才能執(zhí)行后續(xù)的繪制操作,這就是為什么需要對(duì)圖片解壓縮的原因。

CGBitmapContextCreate

CG_EXTERN CGContextRef __nullable CGBitmapContextCreate(void * __nullable data,
    size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow,
    CGColorSpaceRef cg_nullable space, uint32_t bitmapInfo)
    CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

理解該函數(shù)含義前需要了解以下幾個(gè)參數(shù):
bitsPerComponent:一個(gè)像素中每個(gè)獨(dú)立的顏色分量使用的 bit 數(shù)
Bits per pixel: 一個(gè)像素使用的總 bit 數(shù)
Bytes per row:位圖中的每一行使用的字節(jié)數(shù)
以上三個(gè)參數(shù)構(gòu)成了一個(gè)像素格式,
此外還有一個(gè)參數(shù):位圖的布局信息 CGBitmapInfo

未完待續(xù)。。。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 卷首語(yǔ) 歡迎來(lái)到 objc.io 的第三期! 這一期都是關(guān)于視圖層的。當(dāng)然視圖層有很多方面,我們需要把它們縮小到幾...
    評(píng)評(píng)分分閱讀 1,946評(píng)論 0 18
  • 繪制像素到屏幕上 answer-huang22 Mar 2014 分享文章 一個(gè)像素是如何繪制到屏幕上去的?有很多...
    阿貍旅途T恤閱讀 1,779評(píng)論 0 7
  • 知道了那么多關(guān)于iOS上界面渲染的理論知識(shí)后,終于可以回歸最開(kāi)始的問(wèn)題,將一張 png/jpg 格式的圖片渲染到頁(yè)...
    巫師學(xué)徒閱讀 811評(píng)論 0 2
  • 為什么圖像在顯示到屏幕上之前要進(jìn)行解碼 一般我們使用的圖像是JPEG/PNG,這些圖像數(shù)據(jù)不是位圖,而是是經(jīng)過(guò)編碼...
    zziazm閱讀 8,229評(píng)論 1 30
  • 文 / 落籬子 1.我跟你很熟嗎 長(zhǎng)發(fā)及腰的蘇黎世已不是當(dāng)年那個(gè)混進(jìn)人群中就被淹沒(méi)的毫不起眼的小女孩了。 現(xiàn)在的蘇...
    落籬子閱讀 2,128評(píng)論 31 41

友情鏈接更多精彩內(nèi)容