版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.10.16 |
前言
ImageIO
框架主要用來(lái)讀寫(xiě)大多數(shù)圖像文件格式。 管理顏色和訪(fǎng)問(wèn)圖像元數(shù)據(jù)柠衍。接下來(lái)幾篇我們就詳細(xì)的解析這個(gè)框架。感興趣的可以看我寫(xiě)的上面幾篇。
1. ImageIO框架詳細(xì)解析(一) —— 基本概覽
Introduction - 介紹
圖像I / O編程接口允許應(yīng)用程序讀取和寫(xiě)入大多數(shù)圖像文件格式妻往。最初是Core Graphics
框架的一部分,圖像I / O駐留在自己的框架中试和,允許開(kāi)發(fā)人員獨(dú)立地使用Core Graphics(Quartz 2D)
讯泣。Image I/ O提供了訪(fǎng)問(wèn)圖像數(shù)據(jù)的最終方法,因?yàn)樗浅8咝г暮罚梢院苋菀椎卦L(fǎng)問(wèn)元數(shù)據(jù)好渠,并提供顏色管理昨稼。
在OS X v10.4
和稍后的ios4
和稍后的版本中,I / O接口可用拳锚。
誰(shuí)適合看這個(gè)文章
本文章是為在應(yīng)用程序中讀寫(xiě)圖像數(shù)據(jù)的開(kāi)發(fā)人員編寫(xiě)的假栓。目前使用圖像導(dǎo)入器或其他圖像處理庫(kù)的開(kāi)發(fā)人員應(yīng)該閱讀該文檔,了解如何使用圖像I / O框架霍掺。
文檔組織
這篇文章是由以下部分組成:
-
- 討論支持的圖像格式匾荆,并演示如何在Xcode項(xiàng)目中包含框架,這也是這篇文章的主要內(nèi)容杆烁。
-
Creating and Using Image Sources
- 顯示如何創(chuàng)建一個(gè)圖像源牙丽,并從圖像源創(chuàng)建一個(gè)圖像,并從用戶(hù)界面中提取屬性用于展示兔魂。
-
Working with Image Destinations
- 提供創(chuàng)建圖像目的地的信息烤芦,設(shè)置其屬性,并向其添加圖像入热。
可以參考
-
Image I/O Reference Collection
- 提供圖像I / O框架中函數(shù)拍棕、數(shù)據(jù)類(lèi)型和常量的詳細(xì)描述。
基本使用
下面我們就看一下ImageIO框架的基本使用勺良。
Image I / O
框架提供了不透明的數(shù)據(jù)類(lèi)型绰播,用于從源(CGImageSourceRef)讀取圖像數(shù)據(jù),并將圖像數(shù)據(jù)寫(xiě)入目的地(CGImageDestinationRef)尚困。它支持廣泛的圖像格式蠢箩,包括標(biāo)準(zhǔn)的web格式、高動(dòng)態(tài)范圍的圖像和原始的攝像數(shù)據(jù)事甜。圖像I / O有許多其他特征谬泌,如:
- Mac平臺(tái)最快的圖像解碼器和編碼器
- 逐步加載圖像的能力
- 支持圖像元數(shù)據(jù)
- 有效的緩存
您可以從以下幾個(gè)方面創(chuàng)建圖像源和圖像目標(biāo)對(duì)象:
-
url
÷咔可以將其位置指定為URL的圖像可以作為圖像數(shù)據(jù)的提供者或接收方掌实。在圖像I / O中,URL被表示為Core Foundation
數(shù)據(jù)類(lèi)型CFURLRef邦马。 -
Core Foundation
對(duì)象CFDataRef和CFMutableDataRef贱鼻。 -
Quartz
數(shù)據(jù)消費(fèi)者 (CGDataConsumerRef)和數(shù)據(jù)提供者(CGDataProviderRef)對(duì)象。
1. Using the Image I/O Framework in Your Application - 在您的程序中使用Image I/O框架
圖像I / O駐留在OS X的應(yīng)用程序服務(wù)框架中滋将,以及在iOS中的I / O框架中邻悬。在將框架添加到應(yīng)用程序之后,通過(guò)包含以下語(yǔ)句導(dǎo)入頭文件:
#import < ImageIO / ImageIO.h >
2. Supported Image Formats - 支持的圖像格式
Image I / O
框架可以理解大多數(shù)常見(jiàn)的圖像文件格式随闽,如JPEG父丰、JPEG2000、RAW掘宪、TIFF蛾扇、BMP和PNG
攘烛。不是所有的格式都支持在每個(gè)平臺(tái)上。對(duì)于I / O支持的最新列表屁桑,您可以調(diào)用這些函數(shù):
- CGImageSourceCopyTypeIdentifiers返回一個(gè)Image I/O支持作為圖像源的Uniform Type Identifiers數(shù)組医寿。
- CGImageDestinationCopyTypeIdentifiers返回一個(gè)Image I/O支持作為圖像目的地的統(tǒng)一類(lèi)型識(shí)別。
然后可以使用CFShow函數(shù)將數(shù)組打印到Xcode中的調(diào)試器控制臺(tái)蘑斧,如Listing 1-1所示靖秩。這些函數(shù)返回的數(shù)組中的字符串以com.apple.pict, public.jpeg, public.tiff
的形式返回。Table 1-1 列出了許多常見(jiàn)圖像文件格式的UTIs
竖瘾。OS X和iOS為大多數(shù)常見(jiàn)的圖像文件格式定義了常量沟突,完整的常量集在UTCoreTypes
中聲明。當(dāng)你需要指定一個(gè)圖像類(lèi)型捕传,您可以使用這些常量惠拭,要么作為一個(gè)圖像源的提示(kCGImageSourceTypeIdentifierHint
)或作為一個(gè)圖像的圖像類(lèi)型的目的地。
// **Listing 1-1** Getting and printing supported UTIs
CFArrayRef mySourceTypes = CGImageSourceCopyTypeIdentifiers();
CFShow(mySourceTypes);
CFArrayRef myDestinationTypes = CGImageDestinationCopyTypeIdentifiers();
CFShow(myDestinationTypes);
后記
未完庸论,待續(xù)~~~