[Cocoa]_[初级]_[在Cocoa中使用图形上下文设备剪切图片]
来源:互联网 发布:php建站模板 编辑:程序博客网 时间:2024/05/17 20:02
如下是函数借口
CutImageFilter.h
#import "BaseFilter.h"@interface CutImageFilter : NSObject{ NSRect cutImageRect;}@property(readwrite,assign) NSRect cutImageRect;-(NSImage *) doFilter:(NSImage*) image;@end
CutImageFilter.m
#import "CutImageFilter.h"@implementation CutImageFilter@synthesize cutImageRect;-(NSImage *) doFilter:(NSImage*) image{ NSLog(@"CutImageFilter.h"); NSAutoreleasePool *pool = [NSAutoreleasePool new]; CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)[*image TIFFRepresentation],NULL); CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, 0, NULL); CGFloat x =cutImageRect.origin.x; CGFloat y =cutImageRect.origin.y; CGFloat width = cutImageRect.size.width; CGFloat height = cutImageRect.size.height; CGRect myImageArea = CGRectMake(x, y, width, height); CGImageRef mySubimage = CGImageCreateWithImageInRect (imageRef, myImageArea); if(mySubimage != nil) { *image = [self imageFromCGImageRef:mySubimage]; //NSLog(@"image width:%f,height:%f",image.size.width,image.size.height); //NSData *data = [image TIFFRepresentation]; //[data writeToFile:@"/Users/mac-d1/work/cutImage11.png" atomically:YES]; } [pool drain];}- (NSImage*) imageFromCGImageRef:(CGImageRef)image{ NSAutoreleasePool *pool = [NSAutoreleasePool new]; 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]; [newImage lockFocus]; // Get the Quartz context and draw. imageContext = (CGContextRef)[[NSGraphicsContext currentContext]graphicsPort]; CGContextDrawImage(imageContext, *(CGRect*)&imageRect, image); [newImage unlockFocus]; [pool drain]; return newImage; }@end
运用:
CutImageFilter *cutFilter =[CutImageFilter new];[cutFilter setCutImageRect:NSMakeRect(0,0,100,100)];NSImage *sourceImage =[NSImage imageNamed:@"sourceImage.png"];NSImage *cutImage =[cutFilter doFilter:sourceImage]; //得到剪切的图片
0 0
- [Cocoa]_[初级]_[在Cocoa中使用图形上下文设备剪切图片]
- [Cocoa]_[初级]_[NSThread的使用]
- [Cocoa]_[初级]_[Cocoa中对GIF动画分解成一帧帧的图片]
- [Cocoa]_[初级]_[在一张图片上添加图片水印和文字水印]
- [Cocoa]_[初级]_[NSTimer在Cocoa中的应用,主要以多张图片切换的播放和停止]
- [Cocoa]_[初级]_[自定义的界面上绘制图片]
- [Cocoa]_[初级]_[使用异步线程加载图片文件实现进度条的更新]
- [Cocoa]_[初级]_[使用NSAffineTransfrom 对NSImage图片进行旋转]
- [Cocoa]_[初级]_[使用NSXMLElement 创建一个XML文件]
- [Cocoa]_[初级]_[使用NSMutableDictionary词典生成plist文件]
- [Cocoa]_[初级]_[使用NSOutlineView创建多根显示]
- [Cocoa]_[初级]_[在自定义View中单击鼠标右键弹出菜单栏]
- [Cocoa]_[初级]_[自定义NSTableHeaderView]
- [Cocoa]_[初级]_[NSTableView添加背景图片]
- [Cocoa]_[初级]_[如何复制NSView]
- [Cocoa]_[初级]_[文件拖放操作]
- [Cocoa]_[初级]_[Cocoa设计模式总结]
- [Cocoa]_[初级]_[选择文件目录,在当前目录中添加所需的文件到程序中]
- java中使用jdbcTemplate的query方法举例与总结
- 第14周项目6-5-输出二维数组每行最小值
- iOS绘图系列一:概述
- HDU 2096 小明A+B
- 细说Servlet-- Cookie
- [Cocoa]_[初级]_[在Cocoa中使用图形上下文设备剪切图片]
- 12. Dubbo原理解析-注册中心之基于dubbo协议的简单注册中心实现
- jdk+tomcat+axis2配置及常见问题
- 细说servlet之 深度剖析http协议
- read-only file system
- CEF3和本地程序交互机制
- 用jeffy-vim配置vim,秒杀其他的配置方法
- 给自己的博客开个头
- Android布局心得