将超大图像区域裁剪为当前在屏幕上显示的内容

时间:2013-06-28 04:51:47

标签: ios cocoa-touch uiimageview

我在图像视图中加载的超大图像在垂直和水平方向都超出范围。

最终用户可以滚动图像(超大图像视图在滚动视图中),当他们找到他们喜欢的区域时,我想裁剪出屏幕上显示的图像区域。 (很像截图,但只有imageview.image我将把它放到不同的Imageview中。

我似乎无法弄清楚如何完成当前在屏幕上显示的图像视图图像区域的“屏幕截图”。

2 个答案:

答案 0 :(得分:0)

您可以使用CGImageCreateWithImageInRect创建显示图像的子图像。使用contentOffset和scrollViews bounds创建要从中创建图像的矩形。

CGRect rect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, CGRectGetWidth(scrollView.bounds), CGRectGetHeight(scrollView.bounds));
CGImageRef subImageRef = CGImageCreateWithImageInRect([originalImage CGImage], rect);

如果你缩放你的scrollView,你也需要考虑zoomLevel。

答案 1 :(得分:0)

我最终使用以下代码来实现我想要抓取图像的目标。感谢Karl的投入,感谢iNoob对上一个问题的回答[位于StackOverflow] [1]我用过我的。

只需使用以下代码拍摄“截图”,只需在图片中设置您不想要的任何内容即.hidden = True;在代码之前将其隐藏在屏幕截图中并将它们设置为.Hidden = FALSE;在代码之后将它们带回来。

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();