我在圖像視圖中加載了超大圖像,該圖像視圖在垂直和水平方向均超出範圍。將超大圖像的區域裁剪爲屏幕上當前顯示的區域
最終用戶可以滾動圖像(超大圖像視圖處於滾動視圖),當他們找到他們喜歡的區域時,我想剪出屏幕上顯示的圖像區域。 (很像截圖,但只有imageview.image我然後將它放到不同的Imageview。
我似乎無法解決如何完成圖像區域的「截圖」當前顯示在屏幕上觀看的圖像。
我在圖像視圖中加載了超大圖像,該圖像視圖在垂直和水平方向均超出範圍。將超大圖像的區域裁剪爲屏幕上當前顯示的區域
最終用戶可以滾動圖像(超大圖像視圖處於滾動視圖),當他們找到他們喜歡的區域時,我想剪出屏幕上顯示的圖像區域。 (很像截圖,但只有imageview.image我然後將它放到不同的Imageview。
我似乎無法解決如何完成圖像區域的「截圖」當前顯示在屏幕上觀看的圖像。
您可以使用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也考慮到了。
我結束了使用下面的代碼來實現我正在尋找的圖像。感謝卡爾的投入,並感謝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();
我結束了去不同的路線,因爲我放大/縮小需要更少的計算。不管你的努力如何,謝謝你。我實際上會研究CGImageCreateWithImageInRect以查看它是如何工作的,可能遇到我可以使用它的東西。再次感謝你。 –