关于ImageIO:
来源:
ImageIO来源于Mac OS,这个框架也不是必要的,因为UIIMage已经对其进行了大量的封装,很多方法都可以通过UIImage直接调用使用。==,附加一句,
imageIO加入IOS在ios4以后,通过查看SDWebimage的源码,也许你可以看到这个库使用ImgageIO的时刻,判断了版本。
1:获取图片底层属性。
用途:
如果只是普通的对Image数据的读取,使用UIImage也许就够了,
但是,当我们需要访问image的底层属性的时刻,就需要使用这个了:
例如:
当我们需要访问一张图片的DPI:(图片每英寸的像素)
EXIF data:(EXIF是一种图像格式,它的数据存储与JPEG格式是完全相同的。只不过,在JPEG格式的头部,插入了数码照片的信息,例如光圈,快门,日期等各种信息。)
------------
当需要访问上面的信息的时刻,使用UIImage显然是不可能的事情==,这个时刻就需要使用到ImageIO框架了。
用例:
1:创建一个CGImageSourceRef 根据目标Image。
2:获取属性字典。
CGImageSourceCopyPropertiesAtIndex
3:
CGImageProperties Reference
.列出了所有的可访问属性,可以通过CFDictionary的
CFDictionaryGetValue方法,获取感兴趣的数据。
-------------------
2:怎么使用ImageIO
2.1:ImageIO用于网络图片获取和上传。
The Image I/O framework provides opaque data types for reading image data from a source (CGImageSourceRef) and writing image data to a destination (CGImageDestinationRef).
使用:
需要一个数据源和一个数据目的地,只需要这两个东西就可以实现image数据的远程传输。
创建方式:
You can create image source and image destination objects from:
- URLs. Images whose location can be specified as a URL can act as a supplier or receiver of image data. In Image I/O, a URL is represented as the Core Foundation data type CFURLRef.
- The Core Foundation objects CFDataRef and CFMutableDataRef.
- Quartz data consumer (CGDataConsumerRef) and data provider (CGDataProviderRef) objects.
IMAGE SOURCE:
数据源的创建:
之所以要存在image source这个东西,是因为,如果我们直接操作二进制数据块的话,==,会很难。而将那个二进制数据块封装成image Source就可以减少我们的处理。
那么,使用的方法是什么:
本文探讨了IOS系统中的CoreImage和ImageIO框架。ImageIO框架提供了获取图片底层属性的功能,如通过CFDictionaryGetValue方法获取感兴趣的数据。同时,它支持从URL、CFDataRef、CGDataConsumerRef和CGDataProviderRef创建图像源和图像目标对象,用于读取和写入图像数据。

2万+

被折叠的 条评论
为什么被折叠?



