2012-03-05 4 views
1

다음 코드로 CGRect를 캡처하고 있습니다. 그러나 결과 이미지는 내가 원하는 이미지가 아닙니다. 이미지에 약간의 배경이 있습니다. 사진 enter image description here을 제안하여 투명 배경을 제거하기 위해해야 ​​할 일. 그 기원과 일치하도록CGRect를 캡처해도 올바른 이미지가 제공되지 않습니다. 무엇을해야합니까?

- (UIImage *)captureScreenInRect:(CGRect)captureFrame { 

     CALayer *layer; 
     layer = imageScrollview.layer; 
     UIGraphicsBeginImageContext(imageScrollview.bounds.size); 
     CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame); 
     \[layer renderInContext:UIGraphicsGetCurrentContext()\]; 
     UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return screenImage; 

    } 

답변

0

은 컨텍스트를 번역하여 captureFrame :

UIGraphicsBeginImageContext(imageScrollview.bounds.size); 
CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(c, -captureFrame.origin.x, -captureFrame.origin.y); 
[imageScrollView.layer renderInContext:c]; 
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

(안된, 메모리에서 작성)

또한 이미지가 이미 의해 잘린로 문맥이 필요하지 않습니다 클리핑 이미지 문맥의 경계.

+0

을보십시오. scrollview 또는 컨텍스트 뭔가 잘못된 일을하는 것 같아요. 답장을 보내 주셔서 감사합니다. – DipakSonara

-1

아직도 제대로 포착하지이 하나

CGRect cropRect = CGRectMake(imageScrollview.frame.origin.x+15, imageScrollview.frame.origin.y+15, WIDTH, HEIGHT); 
+1

Thanks Paras :) – DipakSonara

+0

진지한가? 왜 처음부터 15 px의 공간이 있는지 해킹하지 말고 알아 내야합니다. 이미지가 이미지 뷰의 왼쪽 상단에 있지 않기 때문에 이미지 뷰 주위에 여분의 공간을 캡처 할 수 있습니다. 다음 번에이 코드를 다른 곳에서 사용하면 완전히 잘못된 결과를 얻게됩니다. –

+0

사실 나는 똑같은 문제점을 가지고 있으며이 해킹으로 고쳐서 여기에 붙여 넣기 만하면 고정 된 DipakSonara의 문제가 될 수있다. ... –

관련 문제