2012-06-20 66 views
1

我試圖從UIImageView獲得UIImage的可見部分。 UIImageView需要整個屏幕。捏&潘姿態被添加到UIImageView。所以,用戶可以平移/縮放imageview。平移/縮放後,我只想裁剪圖像視圖的可見部分。我已經嘗試了很多方法。但它讓我錯誤地認識了圖像的一部分。iOS獲取圖像的可見部分爲UIImageView

謝謝提前。

+1

請分享您的裁剪代碼,感謝 – doNotCheckMyBlog

回答

1

謝謝所有。我已經想出瞭解決方案。這是我用來獲取圖像可見部分的代碼。 (縮放或平移,由於它採取了整個屏幕時,請保持它在你的心中的形象是完全不可見)

- (UIImage *)cropVisiblePortionOfImageView:(UIImageView *)imageView { 

    CGFloat zoomScaleX=imageView.frame.size.width/initialWidth; 
    CGFloat zoomScaleY=imageView.frame.size.height/initialHeight; 
    CGSize zoomedSize=CGSizeMake(initialWidth*zoomScaleX,initialHeight*zoomScaleY); 

    UIGraphicsBeginImageContext(zoomedSize); 
    [imageView.image drawInRect:CGRectMake(0, 0, zoomedSize.width, zoomedSize.height)]; 
    UIImage *zoomedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    UIGraphicsBeginImageContext(CGSizeMake(initialWidth, initialHeight)); 
    [zoomedImage drawAtPoint:CGPointMake(imageView.frame.origin.x, imageView.frame.origin.y)]; 
    UIImage *cropedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return cropedImage; 
} 
9

包括QuartzCore框架到您的項目和實施此方法從您的圖像視圖獲取圖像的可見部分: (一注:我的意思是你在你的項目中使用ARC)

#import <QuartzCore/QuartzCore.h> 

- (UIImage*)imageFromImageView:(UIImageView*)imageView 
{ 
    UIGraphicsBeginImageContext(imageView.frame.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextRotateCTM(context, 2*M_PI); 

    [imageView.layer renderInContext:context]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 
+0

謝謝您的回答。 –

+0

非常感謝#DizAsm。它適用於我的imageview。我爲我的imageview設置了下面的屬性。[imageView setClipsToBounds:YES]; 和imageView.contentMode = UIViewContentModeScaleAspectFill。從imageview可見區域獲取精確圖像非常困難。現在它完美地工作。 – Rajesh