您的位置:首页 > 移动开发 > IOS开发

ios 图片的截取

2013-10-31 09:17 218 查看
第一种:整个屏幕截取

在ViewController中写的,这个类是一个视图控制器

-(void)loadView{

//静态方法sharedApplication

[[UIApplication sharedApplication]setStatusBarHidden:YES //把状态栏隐藏

withAnimation:UIStatusBarAnimationSlide];

UIImage *mage=[UIImage imageNamed:@"image.png"];

UIImageView *imageView=[[UIImageView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]];

//UIImageView *im=[UIImageView alloc]initWithImage:mage];

[imageView setImage:mage];

self.view=[[UIView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]];

[self.view addSubview:contentView];

CGRect rect=CGRectMake(0, 0, 320, 480);

UIGraphicsBeginImageContext(rect.size);

CGContextRef currentContext=UIGraphicsGetCurrentContext();

CGContextClipToRect(currentContext,rect);

CGContextDrawImage(currentContext, rect, mage.CGImage);

UIImage *image=UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

contentView.image=image;

self.view=[[UIView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]];

[self.view addSubview:contentView];

[image release];

}

第二种:整张图片的缩略

-(void)loadView{

[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

UIImage *image=[UIImage imageNamed:@"image.png"];

//UIImageView *contentView=[[UIImageView alloc]initWithFrame:[[UIScreen mainScreen] applicationFrame]];

//用来控制图片缩到多大

CGRect rect=CGRectMake(0, 0, 160, 240);

UIGraphicsBeginImageContext(rect.size);

CGContextRef currentContent=UIGraphicsGetCurrentContext();

CGContextClipToRect(currentContent, rect);

[image drawInRect:rect];

UIImage *image=UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageView *contentView=[[UIImageView alloc]initWithFrame:rect];

contentView.image=image;

self.view=[[UIView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]];

[self.view addSubview:contentView];

[image release];

}

第san种:真正的截取图片

- (void)loadView {

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];

UIImage *image=[UIImage imageNamed:@"image2.png"];

CGRect rect = CGRectMake(33, 22, 140, 353);//创建矩形框

CGRect re=CGRectMake(0, 0, 140, 140);

UIImageView *contentView = [[UIImageView alloc] initWithFrame:re];

contentView.image=[UIImage imageWithCGImage:CGImageCreateWithImageInRect([image CGImage], rect)];

self.view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

ImageView *imageView=[[ImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];

self.view.backgroundColor=[UIColor yellowColor];

[self.view addSubview:imageView];

[self.view addSubview:contentView];

[image release];

}

******************************以下是写的一个简单的Demo******************************

#import <UIKit/UIKit.h>

@interface imageView : UIView{

CGPoint starPoint;

CGPoint endPoint;

UIImage *image;

}

@end

#import "imageView.h"

@implementation imageView

-(void)dealloc{

[super dealloc];

}

- (id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

allMovePoints=[[NSMutableArray alloc]init];

//self.frame=CGRectMake(0, 0, 220, 340);

self.frame=CGRectMake(0, 0, 320, 480);

image=[UIImage imageNamed:@"image.png"];

self.backgroundColor=[UIColor colorWithPatternImage:image];

// UIImageView *imageView=[[UIImageView alloc]initWithImage:image];

// imageView.tag=3;

// imageView.frame=CGRectMake(0, 0, 320, 360);

// [self addSubview:imageView];

// Initialization code

}

return self;

}

-(void)drawRect:(CGRect)rect{

CGContextRef context=UIGraphicsGetCurrentContext();

CGContextSetRGBStrokeColor(context, 1, 5.0, 1.0, 1.0);

CGContextSetLineWidth(context, 2.0);

CGContextAddRect(context, CGRectMake(starPoint.x, starPoint.y, endPoint.x-starPoint.x, endPoint.y-starPoint.y));

CGContextStrokePath(context);

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *t=[touches anyObject];

starPoint=[t locationInView:self];

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *t=[touches anyObject];

//CGPoint p=[t locationInView:self];

endPoint=[t locationInView:self];

UIImageView *image11=(UIImageView *)[self viewWithTag:3];

[image11 removeFromSuperview];

//[allMovePoints addObject:NSStringFromCGPoint(p)];

[self setNeedsDisplay];

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

CGRect rect1 = CGRectMake(starPoint.x, starPoint.y, endPoint.x-starPoint.x, endPoint.y-starPoint.y);//创建矩形框

CGRect re=CGRectMake(320-endPoint.x+starPoint.x, 480-endPoint.y+starPoint.y, endPoint.x-starPoint.x, endPoint.y-starPoint.y);

UIImageView *contentView = [[UIImageView alloc] initWithFrame:re];

contentView.tag=3;

contentView.image=[UIImage imageWithCGImage:CGImageCreateWithImageInRect([image CGImage], rect1)];

[self addSubview:contentView];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: