我在图像视图中加载了一个超大的图像,垂直和水平都超出了界限。
最终用户可以滚动图像(超大的图像视图在滚动视图中),当他们找到他们喜欢的区域时,我想裁剪屏幕上显示的图像区域。(很像一个截图,但只是 imageview.image 我将把它放到不同的 Imageview 中。
我似乎无法弄清楚如何完成当前显示在屏幕上的图像视图图像区域的“屏幕截图”。
我在图像视图中加载了一个超大的图像,垂直和水平都超出了界限。
最终用户可以滚动图像(超大的图像视图在滚动视图中),当他们找到他们喜欢的区域时,我想裁剪屏幕上显示的图像区域。(很像一个截图,但只是 imageview.image 我将把它放到不同的 Imageview 中。
我似乎无法弄清楚如何完成当前显示在屏幕上的图像视图图像区域的“屏幕截图”。
您可以使用CGImageCreateWithImageInRect
创建显示图像的子图像。使用contentOffset
和 scrollViewsbounds
创建要从中创建图像的矩形。
CGRect rect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, CGRectGetWidth(scrollView.bounds), CGRectGetHeight(scrollView.bounds));
CGImageRef subImageRef = CGImageCreateWithImageInRect([originalImage CGImage], rect);
如果你缩放你的scrollView,你也需要考虑zoomLevel。
我最终使用以下代码来实现我想要获取图像的内容。感谢 Karl 的意见,并感谢 iNoob,他回答了我以前的问题 [Located here on 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();