IOS中使用像素位图(CGImageRef)对图片进行处理
2015-07-04 11:13
465 查看
IOS中对图片进行重绘处理的方法总结
一、CGImageRef是什么
CGImageRef是定义在QuartzCore框架中的一个结构体指针,用C语言编写。在CGImage.h文件中,我们可以看到下面的定义:?
* 是完全等价的。这个结构用来创建像素位图,可以通过操作存储的像素位来编辑图片。
QuartzCore这个框架是可移植的。
二、CGImageRef相关的一些方法解析
CFTypeID CGImageGetTypeID(void)这个方法返回的是一个编号,每个Core Foundation框架中得结构都会有一个这样的编号,CFTypeID定义如下:
?
CGImageRef CGImageCreate(size_t width, size_t height,
size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow,
CGColorSpaceRef space, CGBitmapInfo bitmapInfo, CGDataProviderRefprovider,
const CGFloat decode[], bool shouldInterpolate,
CGColorRenderingIntent intent);
通过这个方法,我们可以创建出一个CGImageRef类型的对象,下面分别对参数进行解释:
sizt_t是定义的一个可移植性的单位,在64位机器中为8字节,32位位4字节。
width:图片宽度像素
height:图片高度像素
bitsPerComponent:每个颜色的比特数,例如在rgba-32模式下为8
bitsPerPixel:每个像素的总比特数
bytesPerRow:每一行占用的字节数,注意这里的单位是字节
space:颜色空间模式,例如const CFStringRef kCGColorSpaceGenericRGB
这个函数可以返回一个颜色空间对象。
bitmapInfo:位图像素布局,枚举如下:
?
decode[]:解码渲染数组
shouldInterpolate:是否抗锯齿
intent:图片相关参数
CGImageRef CGImageMaskCreate(size_t width, size_t height,
size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow,
CGDataProviderRef provider, const CGFloat decode[], boolshouldInterpolate)
这个方法用于创建mask图片图层,可以设置其显示部分与不显示部分达到特殊的效果,参数意义同上。
CGImageRef CGImageCreateCopy(CGImageRef image)
这个方法可以复制一个CGImageRef对象
CGImageRef CGImageCreateWithJPEGDataProvider(CGDataProviderRef
source, const CGFloat decode[], bool shouldInterpolate,
CGColorRenderingIntent intent)
通过JPEG数据源获取图像
CGImageRef CGImageCreateWithPNGDataProvider(CGDataProviderRef source,
const CGFloat decode[], bool shouldInterpolate,
CGColorRenderingIntent intent)
通过PNG数据源获取图像
CGImageRef CGImageCreateWithImageInRect(CGImageRef image,
CGRect rect)
截取图像的一个区域重绘图像
CGImageRef CGImageCreateWithMask(CGImageRef image, CGImageRef mask)
截取mask图像的某一区域重绘
CGImageRef CGImageCreateWithMaskingColors(CGImageRef image,
const CGFloat components[])
通过颜色分量数组创建位图
CGImageRef CGImageCreateCopyWithColorSpace(CGImageRef image,
CGColorSpaceRef space)
通过颜色空间模式复制位图
CGImageRef CGImageRetain(CGImageRef image)
引用+1
void CGImageRelease(CGImageRef image)
引用-1
bool CGImageIsMask(CGImageRef image)
返回是否为Mask图层
size_t CGImageGetWidth(CGImageRef image)
获取宽度像素
size_t CGImageGetHeight(CGImageRef image)
获取高度像素
下面这些方法分别获取相应属性
size_t CGImageGetBitsPerComponent(CGImageRef image)
size_t CGImageGetBitsPerPixel(CGImageRef image)
size_t CGImageGetBytesPerRow(CGImageRef image)
CGColorSpaceRef CGImageGetColorSpace(CGImageRef image)CG_EXTERNCGImageAlphaInfo CGImageGetAlphaInfo(CGImageRef image)
CGDataProviderRef CGImageGetDataProvider(CGImageRef image)
const CGFloat *CGImageGetDecode(CGImageRef image)
bool CGImageGetShouldInterpolate(CGImageRef image)
CGColorRenderingIntent CGImageGetRenderingIntent(CGImageRef image)
CGBitmapInfo CGImageGetBitmapInfo(CGImageRef image)
三、应用举例
使用CGImageRef进行图片截取?
?
相关文章推荐
- iOS 项目(一)
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- iOS 发布证书申请 (转载)
- iOS开发:创建真机调试证书
- IOS 开发环境,证书和授权文件
- IOS MJExtension json转模型的轻量级框架的使用(转载)
- iOS synchronized的作用
- 一种基于im客户端实现消息图片管理的方法和装置
- 使用 iOS6 自带的 social.framework 实现分享文字图片等到新浪微博,twitter,
- iOS中NSDate和NSString相互转换
- iOS中蓝牙的实现方案
- 获取iOS应用中当前处于Activity状态的ViewController
- iOS开发系列课程(01) --- iOS编程入门
- iOS中堆和栈的区别
- 苹果开发 笔记(44)
- iOS7: 漫谈基础集合类(NSArray, NSSet, NSOrderedSet 和 NSDictionary)
- IOS开发之----单例设计模式
- iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画
- iOS 计算 日期 距离 当前 系统的日期 相差 多少
- [iOS]使用autolayout的时候会有明明设置和父视图左右间距为0但却还有空隙问题