ImageIO框架详细解析(二) —— 使用ImageIO基础

版本记录

版本号 时间
V1.0 2017.10.16

前言

ImageIO框架主要用来读写大多数图像文件格式。 管理颜色和访问图像元数据。接下来几篇我们就详细的解析这个框架。感兴趣的可以看我写的上面几篇。
1. ImageIO框架详细解析(一) —— 基本概览

Introduction - 介绍

图像I / O编程接口允许应用程序读取和写入大多数图像文件格式。最初是Core Graphics框架的一部分,图像I / O驻留在自己的框架中,允许开发人员独立地使用Core Graphics(Quartz 2D)。Image I/ O提供了访问图像数据的最终方法,因为它非常高效,可以很容易地访问元数据,并提供颜色管理。

OS X v10.4和稍后的ios4和稍后的版本中,I / O接口可用。


谁适合看这个文章

本文章是为在应用程序中读写图像数据的开发人员编写的。目前使用图像导入器或其他图像处理库的开发人员应该阅读该文档,了解如何使用图像I / O框架。


文档组织

这篇文章是由以下部分组成:

  • Basics of Using Image I/O

    • 讨论支持的图像格式,并演示如何在Xcode项目中包含框架,这也是这篇文章的主要内容。
  • Creating and Using Image Sources

    • 显示如何创建一个图像源,并从图像源创建一个图像,并从用户界面中提取属性用于展示。
  • Working with Image Destinations

    • 提供创建图像目的地的信息,设置其属性,并向其添加图像。

可以参考

  • Image I/O Reference Collection
    • 提供图像I / O框架中函数、数据类型和常量的详细描述。

基本使用

下面我们就看一下ImageIO框架的基本使用。

Image I / O框架提供了不透明的数据类型,用于从源(CGImageSourceRef)读取图像数据,并将图像数据写入目的地(CGImageDestinationRef)。它支持广泛的图像格式,包括标准的web格式、高动态范围的图像和原始的摄像数据。图像I / O有许多其他特征,如:

  • Mac平台最快的图像解码器和编码器
  • 逐步加载图像的能力
  • 支持图像元数据
  • 有效的缓存

您可以从以下几个方面创建图像源和图像目标对象:

  • url。可以将其位置指定为URL的图像可以作为图像数据的提供者或接收方。在图像I / O中,URL被表示为Core Foundation数据类型CFURLRef。
  • Core Foundation对象CFDataRef和CFMutableDataRef。
  • Quartz 数据消费者 (CGDataConsumerRef)和数据提供者(CGDataProviderRef)对象。

1. Using the Image I/O Framework in Your Application - 在您的程序中使用Image I/O框架

图像I / O驻留在OS X的应用程序服务框架中,以及在iOS中的I / O框架中。在将框架添加到应用程序之后,通过包含以下语句导入头文件:

#import < ImageIO / ImageIO.h >

2. Supported Image Formats - 支持的图像格式

Image I / O框架可以理解大多数常见的图像文件格式,如JPEG、JPEG2000、RAW、TIFF、BMP和PNG。不是所有的格式都支持在每个平台上。对于I / O支持的最新列表,您可以调用这些函数:

  • CGImageSourceCopyTypeIdentifiers返回一个Image I/O支持作为图像源的Uniform Type Identifiers数组。
  • CGImageDestinationCopyTypeIdentifiers返回一个Image I/O支持作为图像目的地的统一类型识别。

然后可以使用CFShow函数将数组打印到Xcode中的调试器控制台,如Listing 1-1所示。这些函数返回的数组中的字符串以com.apple.pict, public.jpeg, public.tiff的形式返回。Table 1-1 列出了许多常见图像文件格式的UTIs。OS X和iOS为大多数常见的图像文件格式定义了常量,完整的常量集在UTCoreTypes中声明。当你需要指定一个图像类型,您可以使用这些常量,要么作为一个图像源的提示(kCGImageSourceTypeIdentifierHint)或作为一个图像的图像类型的目的地。

// **Listing 1-1**  Getting and printing supported UTIs

CFArrayRef mySourceTypes = CGImageSourceCopyTypeIdentifiers();

CFShow(mySourceTypes);

CFArrayRef myDestinationTypes = CGImageDestinationCopyTypeIdentifiers();

CFShow(myDestinationTypes);
ImageIO框架详细解析(二) —— 使用ImageIO基础_第1张图片
Table 1-1 Common uniform type identifiers (UTIs) and image content type constants

后记

未完,待续~~~

ImageIO框架详细解析(二) —— 使用ImageIO基础_第2张图片

你可能感兴趣的:(ImageIO框架详细解析(二) —— 使用ImageIO基础)