2013-06-28 67 views
0

我在圖像視圖中加載了超大圖像,該圖像視圖在垂直和水平方向均超出範圍。將超大圖像的區域裁剪爲屏幕上當前顯示的區域

最終用戶可以滾動圖像(超大圖像視圖處於滾動視圖),當他們找到他們喜歡的區域時,我想剪出屏幕上顯示的圖像區域。 (很像截圖,但只有imageview.image我然後將它放到不同的Imageview。

我似乎無法解決如何完成圖像區域的「截圖」當前顯示在屏幕上觀看的圖像。

回答

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也考慮到了。

+0

我結束了去不同的路線,因爲我放大/縮小需要更少的計算。不管你的努力如何,謝謝你。我實際上會研究CGImageCreateWithImageInRect以查看它是如何工作的,可能遇到我可以使用它的東西。再次感謝你。 –

0

我結束了使用下面的代碼來實現我正在尋找的圖像。感謝卡爾的投入,並感謝iNoob回答了上一個問題[位於StackOverflow上] [1]我用於我的。

只需使用下面的代碼來進行「截圖」,只需設置圖像中不需要的任何內容to.hidden = True;之前的代碼隱藏它的截圖並將它們設置爲。隱藏= FALSE;之後的代碼將他們帶回。

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