IOS-图片操作集合
2013-12-18 09:20
267 查看
CFURLRef. CFDataRef and CFMutableDataRef --- NSData Raw data 编辑图片的几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate函数创建CGImageRef 然后把CGImageRef放到CGContext中去编辑 第三种 用CGImageCreateCopy 或者 CGImageCreateCopyWithColorSpace 函数拷贝 CGImageRef CGImageCreate ( size_t width, //图片的宽度 size_t height, //图片的高度 size_t bitsPerComponent, //图片每个颜色的bits,比如rgb颜色空间,有可能是5 或者 8 == size_t bitsPerPixel, //每一个像素占用的buts,15 位24位 32位等等 size_t bytesPerRow, //每一行占用多少bytes 注意是bytes不是bits 1byte = 8bit CGColorSpaceRef colorspace, //颜色空间,比如rgb CGBitmapInfo bitmapInfo, //layout ,像素中bit的布局, 是rgba还是 argb,== CGDataProviderRef provider, //数据源提供者,url或者内存== const CGFloat decode[], //一个解码数组 bool shouldInterpolate, //抗锯齿参数 CGColorRenderingIntent intent//图片渲染相关参数 ); 创建 image mask的一个途径 CGImageMaskCreate 给图片加mask有两种方法, 第一种 使用函数 CGImageCreateWithMask 或者 CGImageCreateWithMaskingColors 在图片上直接打上mask 这样做对原来的图片要求带有 alpha通道,假如没有,那么不会有半透明的效果 第二种 使用 CGContextClipToMask 在图形上下问的某个矩形区域打上mask,这样做无论原先的图片有没有alpha通道,都可以实现半透明效果 位图永远是矩形形状的 iphone支持图片格式: JPEG, GIF, PNG, TIF, ICO, GMP, XBM, and CUR. 创建一张图片,我们需要提供的一些东西 A bitmap data source An optional Decode Array, 这个数组在渲染的时候会应用在每一个像素上面,是一个颜色变成另外一个颜色。 An interpolation setting, 布尔值,缩放图片的时候是否采用interpolation算法,具体这个算法不怎么了解 渲染意向 图片尺寸 Pixel Format:这个包括3个东西, 1,Bits per component,每一个component有多少Bits 2. Bits per pixel, 每一个像素占多少Bits 3. Bytes per row,每一个占多少Bytes Color Spaces and Bitmap Layout,这里需要提供的几个东西 1,Whether a bitmap contains an alpha channel. 位图是否包含alpha通道 2。 color components是否已经乘以alpha value 3。数据格式是浮点数还是整型 Bitmap Layout是指color components的指是怎么指定的 下面的参数 bitmapInfo就是 Bitmap Layout CGImageRef CGImageCreate ( size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGColorSpaceRef colorspace, CGBitmapInfo bitmapInfo, CGDataProviderRef provider, const CGFloat decode[], bool shouldInterpolate, CGColorRenderingIntent intent ); 选择一个函数来创建图像 CGImageRef CGImageCreate ( size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGColorSpaceRef colorspace, CGBitmapInfo bitmapInfo, CGDataProviderRef provider, const CGFloat decode[], bool shouldInterpolate, CGColorRenderingIntent intent ); 这个是比较万能的函数,但是提供的参数也是非常的多 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 CGImageSourceCreateImageAtIndex ( CGImageSourceRef isrc, size_t index, CFDictionaryRef options ); 从一个图片源中创建图片,这个图片源可能包含不止一张图片,0表示第一张 CGImageRef CGImageSourceCreateThumbnailAtIndex ( CGImageSourceRef isrc, size_t index, CFDictionaryRef options ); 创建一个缩略图从一个图片源中,这个图片源可能包含不止一张图片,0表示第一张 CGImageRef CGBitmapContextCreateImage ( CGContextRef c ); 从一个图形上下文中创建图片 CGImageRef CGImageCreateCopy ( CGImageRef image ); 拷贝一张图片 CGImageRef CGImageCreateCopyWithColorSpace ( CGImageRef image, CGColorSpaceRef colorspace ); 拷贝一张图片,替换原来的颜色空间 从jpeg创建图片 void MyCreateAndDrawBitmapImage (CGContextRef myContext, CGRect myContextRect, const char *filename); { CGImageRef image; CGDataProviderRef provider; CFStringRef path; CFURLRef url; path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8); url = CFURLCreateWithFileSystemPath (NULL, path, // 2 kCFURLPOSIXPathStyle, NO); CFRelease(path); provider = CGDataProviderCreateWithURL (url);// 3 CFRelease (url); image = CGImageCreateWithJPEGDataProvider (provider,// 4 NULL, true, kCGRenderingIntentDefault); CGDataProviderRelease (provider);// 5 CGContextDrawImage (myContext, myContextRect, image);// 6 CGImageRelease (image);// 7 } CGImageRef CGImageMaskCreate ( size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGDataProviderRef provider, const float decode[], int shouldInterpolate ); 从一个已经存在的图形上下文中创建一个CGLayerRef CGLayerRef CGLayerCreateWithContext ( CGContextRef context, CGSize size, CFDictionaryRef auxiliaryInfo ); CGSize CGLayerGetSize ( CGLayerRef layer ); 然后从CGLayerRef中得到CGContextRef,就是图形上下文 CGContextRef CGLayerGetContext ( CGLayerRef layer ); 接着在这个CGContextRef中绘画 Draw the CGLayer to the Destination Graphics Context void CGContextDrawLayerInRect ( CGContextRef context, CGRect rect, CGLayerRef layer ); void CGContextDrawLayerAtPoint ( CGContextRef context, CGPoint point, CGLayerRef layer ); |
相关文章推荐
- IOS-图片操作集合
- IOS-图片操作集合 待更新
- [Objective C]iOS-图片操作集合
- [Objective C]iOS-图片操作集合
- IOS-图片操作集合
- iOS图片实现可拉伸不变形的处理操作
- iOS开发之图片操作,移动,旋转,缩放实例演示
- IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合
- iOS UIWebView 图片自适应以及取消长按放大等操作
- ios 图片操作
- IOS自定义图片浏览器,支持浏览多张图片,点击,双击,两手指缩放操作,并显示加载进度条
- IOS开发中集合操作 处理数据的 交集 并集 差集
- iOS字符串常用操作集合
- [IOS]网络操作+图片的下载和读取+json数据读取
- iOS 史上最全的图片压缩方法集合
- [转载] IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合
- [IOS]网络操作+图片的下载和读取+json数据读取
- iOS 数组集合操作(交集,并集,差集,子集)
- IOS中图片相关操作(读取、保存、绘制、其它相关)
- ios图片操作