图片数据类型转换 NSImage、CIImage、CGImageRef
2012-11-23 11:59
435 查看
将NSImage转换为CIImage
将CGImageRef转换为NSImage *
将NSImage *转换为CGImageRef
转自:http://www.cocoachina.com/b/?p=11
#import <QuartzCore/CIFilter.h> // convert NSImage to bitmap NSImage * myImage = [self currentImage]; NSData * tiffData = [myImage TIFFRepresentation]; NSBitmapImageRep * bitmap; bitmap = [NSBitmapImageRep imageRepWithData:tiffData]; // create CIImage from bitmap CIImage * ciImage = [[CIImage alloc] initWithBitmapImageRep:bitmap]; // create affine transform to flip CIImage NSAffineTransform *affineTransform = [NSAffineTransform transform]; [affineTransform translateXBy:0 yBy:128]; [affineTransform scaleXBy:1 yBy:-1]; // create CIFilter with embedded affine transform CIFilter *transform = [CIFilter filterWithName:@"CIAffineTransform"]; [transform setValue:ciImage forKey:@"inputImage"]; [transform setValue:affineTransform forKey:@"inputTransform"]; // get the new CIImage, flipped and ready to serve CIImage * result = [transform valueForKey:@"outputImage"]; // draw to view [result drawAtPoint: NSMakePoint ( 0,0 ) fromRect: NSMakeRect ( 0,0,128,128 ) operation: NSCompositeSourceOver fraction: 1.0]; // cleanup [ciImage release];
将CGImageRef转换为NSImage *
- (NSImage*) imageFromCGImageRef:(CGImageRef)image { NSRect imageRect = NSMakeRect(0.0, 0.0, 0.0, 0.0); CGContextRef imageContext = nil; NSImage* newImage = nil; // Get the image dimensions. imageRect.size.height = CGImageGetHeight(image); imageRect.size.width = CGImageGetWidth(image); // Create a new image to receive the Quartz image data. newImage = [[[NSImage alloc] initWithSize:imageRect.size] autorelease]; [newImage lockFocus]; // Get the Quartz context and draw. imageContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; CGContextDrawImage(imageContext, *(CGRect*)&imageRect, image); [newImage unlockFocus]; return newImage; }
将NSImage *转换为CGImageRef
- (CGImageRef)nsImageToCGImageRef:(NSImage*)image; { NSData * imageData = [image TIFFRepresentation]; CGImageRef imageRef; if(imageData) { CGImageSourceRef imageSource = CGImageSourceCreateWithData( (CFDataRef)imageData, NULL); imageRef = CGImageSourceCreateImageAtIndex( imageSource, 0, NULL); } return imageRef; }
转自:http://www.cocoachina.com/b/?p=11
相关文章推荐
- MACOS获得 CGContextRef 获得图片数据类型转换 NSImage、CIImage、CGImageRef
- 图片数据类型转换 NSImage、CIImage、CGImageRef
- 图片数据类型转换 NSImage、CIImage、CGImageRef
- 第一周第一天([用文档编辑Java并运行] [Java中数据类型的转换][标题的使用] [引用的使用] [代码块的使用] [图片的使用] [JDK] [Eclipse])
- java 图片缩放,获取图片类型,字节数据和流的转换
- Gdiplus byte *数据转换为Bitmap类型图片
- wince动态加载图片,数据类型转换
- C#中的数据类型转换和图片拼接
- 获取本地路径的方法,在沙河路径中保存图片 ,将保存文件到沙河路径下 把图片转换成NSData类型的数据来保存文件
- C语言中数据类型的转换
- 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
- 整型正数与负数是如何在机器(以stm32为例)中存储与传递的--结合C语言的数据类型转换讲解
- 将字符串数据转换为其他类型
- JAVA基本数据类型及其转换
- 数据类型转换
- 导出遇到 ORACLE 错误 1455:转换列溢出整数数据类型
- 【JavaScript学习笔记】6:数据类型,object类型及其判定,常用类型转换
- C++数据类型转换之字符串向 unsigned long long 64位转换
- SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——跟着开涛学SpringMVC
- SQL Server中时间段查询和数据类型转换