读书人

[转载]截取一部分图片并显示

发布时间: 2012-06-29 15:48:46 作者: rapoo

[转载]截取部分图片并显示

[转自]http://marshal.easymorse.com/archives/3703

在ios开发中,肯定会碰到需要截取部分图片的情况。

最终的效果类似这样:

[转载]截取一部分图片并显示[转载]截取一部分图片并显示

先看最原始的示例,显示完整的图片

写了个最简单的读取图片并显示的代码,打算以此为开始,逐渐实现截取部分图片的功能。

代码主要是,在控制器代码中:

- (void)loadView {?
??? [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];?
??? UIImage *image=[UIImage imageNamed:@"1.jpg"];?
????
??? UIImageView *contentView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];?
??? [contentView setImage:image];?
????
??? self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];?
??? [self.view addSubview:contentView];?
}

另外,应该有一个名为1.jpg的768×1024的图片(我这里是iPad)。

?

?

截取整个图片

可以认为截取整个图片是截取部分图片的一个特例。对ios不熟嘛,因此打算很谨慎的推进。截取整个图片可以减少中间的复杂性。

根据API,摸索着写了一个示例,效果出乎意料:

[转载]截取一部分图片并显示

代码:

- (void)loadView {?
??? [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];?
??? UIImage *image=[UIImage imageNamed:@"1.jpg"];?
????
??? UIImageView *contentView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];?
??? //[contentView setImage:image];?
????
??? CGRect rect = CGRectMake(0, 0, 768, 1024);//创建矩形框?
??? UIGraphicsBeginImageContext(rect.size);//根据size大小创建一个基于位图的图形上下文?
??? CGContextRef currentContext = UIGraphicsGetCurrentContext();//获取当前quartz 2d绘图环境?
??? CGContextClipToRect( currentContext, rect);//设置当前绘图环境到矩形框?
????
??? CGContextDrawImage(currentContext, rect, image.CGImage);//绘图?
??? UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();//获得图片?
??? UIGraphicsEndImageContext();//从当前堆栈中删除quartz 2d绘图环境?
????
??? contentView.image=cropped;?
????
??? self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];?
??? [self.view addSubview:contentView];

??? [cropped release];?
}

这个代码说明了两点:

读书人网 >移动开发

热点推荐