圖片加載 是有 CPU GPU 聯合協做的框架
CPU 是 用來計算 視圖建立 視圖frame 圖片解碼(將壓縮的圖片數據解碼成未壓縮的位圖形式,爲何要壓縮圖片,由於圖片數據太大,實際上無論是JPEG仍是PNG 都是一種壓縮的位圖圖形格式,只不過PNG 圖片是無損壓縮,而且支持alpha通道。而JPEG圖片則是有損壓縮,能夠指定0 - 100%的壓縮比。然而,將磁盤中圖片渲染到屏幕以前,必需要獲得圖片的原始像素數據,才能讓GPU渲染,GPU渲染流程 :函數
1.GPU獲取圖片的座標線程
2.將座標交給頂點着色器圖片
3.將圖片光柵化(獲取圖片對應屏幕上的像素點)it
4.片元着色器計算(計算每一個像素點的最終顯示顏色值)io
5.從幀緩衝區(Frame buffer)中渲染到屏幕上。class
圖片解壓縮的原理:原理
當未解壓縮的圖片要渲染到屏幕時,系統會在主線程對圖片進行解壓縮,而若是圖片已經解壓縮了,系統就不會再對圖片進行解壓縮。所以,要在子線程提早對圖片進行強制解壓縮便可渲染
而強制解壓縮的原理就是對圖片進行從新繪製,獲得一張新的解壓縮後的位圖。核心函數是map
CGBitmapContentCreate 建立一個位圖上下文
CGBitmapContextCreateImage 建立一張新的解壓縮後的位圖
開源框架 YYImage ,SDWebImage 都是這個原理
)