一、iOS相關(guān)圖形框架初識(shí)

背景

自下而上系統(tǒng)的學(xué)習(xí)或了解iOS中各種圖形框架。

OpenGLES → Metal → GPUImage → CoreAnimations → UIKit

CoreImage、CoreGraphics、Quartz2D

iOS圖形層次(越上層封裝程度越高,摘自網(wǎng)絡(luò))

OpenGL

OpenGL是一個(gè)跨語(yǔ)言、跨平臺(tái)的應(yīng)用bai程序編程接口庫(kù)(API),用于繪制二維和三維矢量圖形。該接口由近350個(gè)不同的函數(shù)調(diào)用組成,用于從簡(jiǎn)單的圖形位繪制到復(fù)雜的三維場(chǎng)景。

OpenGLES

OpenGL ES(OpenGL for Embeded System)是OpenGL(Open Graphics Library)的精簡(jiǎn)子集,是以手持和嵌入式設(shè)備為目標(biāo)的高級(jí)3D圖形API,如現(xiàn)在火爆的智能手機(jī),支持桌面系統(tǒng),還是瀏覽器3D圖形標(biāo)準(zhǔn)WebGL的基礎(chǔ),支持多個(gè)平臺(tái),如桌面端的Linux、Windows,移動(dòng)端的Android、iOS等,無處不在

Metal

WWDC 2014 上,Apple為游戲開發(fā)者推出了新的平臺(tái)技術(shù) Metal,該技術(shù)能夠?yàn)?3D 圖像提高 10 倍的渲染性能,并支持大家熟悉的游戲引擎及公司。
Metal 是一種低層次的渲染應(yīng)用程序編程接口,提供了軟件所需的最低層,保證軟件可以運(yùn)行在不同的圖形芯片上。

GPUImage

GPUImage是一個(gè)著名的圖像處理開源庫(kù),它讓你能夠在圖片、視頻、相機(jī)上使用GPU加速的濾鏡和其它特效。與CoreImage框架相比,可以根據(jù)GPUImage提供的接口,使用自定義的濾鏡。項(xiàng)目地址:https://github.com/BradLarson/GPUImage

CoreAnimation

CoreAnimation如果只從字面上來理解,就會(huì)感覺這只是用來作用動(dòng)畫的一個(gè)類庫(kù),其實(shí)動(dòng)畫只是它的一部分,最重要的是它可以快速組合屏幕上不同的可視內(nèi)容,這些內(nèi)容被分解成獨(dú)立的圖層,存儲(chǔ)在一個(gè)圖層樹的體系中。所有我們能在屏幕上看到的內(nèi)容都和這個(gè)有關(guān)。

UIKit

UIKitk框架提供一系列的Class(類)來建立和管理iPhone OS應(yīng)用程序的用戶界面( UI )接口、應(yīng)用程序?qū)ο蟆⑹录刂?、繪圖模型、窗口、視圖和用于控制觸摸屏等的接口。(PS1: 可以認(rèn)為是操縱界面的一個(gè)API庫(kù))(PS2: UIKit框架是用在 iOS 平臺(tái)上與之對(duì)應(yīng)的是MAC OS X上的Application Kit,二者作用和目的沒啥太大區(qū)別)

CoreImage

這是一篇比較早的關(guān)于CoreImage框架的介紹,介紹的很詳細(xì),包括如何使用CIFiter內(nèi)置的幾種濾鏡、使用框架內(nèi)置的人臉檢測(cè)、固定顏色的透明度剔除、能夠移軸的高斯模糊效果等等。
但是文中關(guān)于CIImage概念的介紹有一些誤區(qū)。CIImage包含生成一個(gè)圖片的全部數(shù)據(jù),不過確切的講CIImage并不同于UIImage、CGImageRef等是一個(gè)圖片對(duì)象,而是這個(gè)圖片的描述的抽象(引自官方原話)。
雖然使用CoreImage框架能夠滿足大部分日常圖片濾鏡處理之類的需求,而且是系統(tǒng)內(nèi)置框架,性能上肯定是經(jīng)過一番考究的,但是其API使用起來比較麻煩,尤其是基于對(duì)攝像頭數(shù)據(jù)流的實(shí)時(shí)濾鏡(目前大部分直播APP要求這個(gè)功能),所以如果項(xiàng)目中有這方面的需求,我們還是用GPUImage。

CoreGraphics

Core Graphics是Quartz 2D的一個(gè)高級(jí)繪圖引擎,常用與iOS,tvOS,macOS的圖形繪制應(yīng)用開發(fā)。Core Graphics是對(duì)底層C語(yǔ)言的一個(gè)簡(jiǎn)單封裝,其中提供大量的低層次,輕量級(jí)的2D渲染API。
Core GraphicsAPI簡(jiǎn)單易于使用,并且提供了強(qiáng)大的功能訪問,如透明層,基于路徑的涂層繪制,屏幕外呈現(xiàn),高級(jí)色彩管理,抗鋸齒已經(jīng)PDF文檔的生成解析操作。

Quartz2D

簡(jiǎn)單來說,Quartz2D是用C語(yǔ)言封裝的二維繪圖引擎,同時(shí)支持iOS和Mac系統(tǒng),利用Quartz2D,我們可以完成以下工作:
繪制圖形 : 線條\三角形\矩形\圓\弧等
繪制文字
繪制\生成圖片(圖像)
讀取\生成PDF
截圖\裁剪圖片
自定義UI控件
Quartz 2D API是Core Graphic框架的一部分,因此其中的很多數(shù)據(jù)類型和方法都是以CG開頭的。會(huì)經(jīng)常見到Quartz 2D(Quartz)和Core Graphics兩個(gè)術(shù)語(yǔ)交互使用

參考資料:
OpenGL入門
iOS 圖形繪制框架 ——UIBezierPath 、Core Graphics 和OpenGL
iOS圖形處理概論:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,Scene Kit (3D) ,Sprite Kit (2D),OpenCV
關(guān)于iOS開發(fā)中圖片處理的一些積累

最后編輯于
?著作權(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ù)。

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