2013-02-03 3 views
0

여기에 설명 된 것과 같이 정확한 문제가 있습니다 :자르기 회전 된 UIImage

crop a rotated UIImage. I는 솔루션을 때

는 I는 회전있는 UIImage 잘라낼 필요하지만, 화상

UIView *rotatedViewBox = [[UIView alloc] initWithFrame:videoPreviewView.frame]; 
NSLog(@"frame width: %f height:%f x:%f y:%f",videoPreviewView.frame.size.width, videoPreviewView.frame.size.height,videoPreviewView.frame.origin.x,videoPreviewView.frame.origin.y); 
rotatedViewBox.transform = CGAffineTransformMakeRotation(90 * M_PI/180); 
CGSize rotatedSize = rotatedViewBox.frame.size; 
UIGraphicsBeginImageContext(rotatedSize); 
CGContextRef bitmap = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(bitmap, rotatedSize.width/2.0f, rotatedSize.height/2.0f); 
CGContextRotateCTM(bitmap, 90 * M_PI/180); 
CGContextScaleCTM(bitmap, 1.0f, -1.0f); 
CGContextDrawImage(bitmap, CGRectMake(-videoPreviewView.frame.size.width/2.0f, 
              -videoPreviewView.frame.size.height/2.0f, 
               videoPreviewView.frame.size.width, 
               videoPreviewView.frame.size.height), 
          image.CGImage); 
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
자르기 않는

로그는 : 프레임 폭 : 310 신장 310 X : 0 Y : 69

회전하지만 작동하지만 새로운 이미지는 이전 이미지의 069310310에 잘립니다되지 않습니다.

+0

는 "작동하지 않습니다"우리에게 아무 것도 알 수 없다. 자세한 내용은 제발. – occulus

+0

질문을 업데이트했습니다. 이미지를 전혀 자르지 않습니다. 회전 만 작동합니다 – Dejell

답변

0
당신은 인정하지만, 또한 영업 이익의 의견을 전달하는 "솔루션"을 사용하는

"그러나 그것은 작동하지 않습니다."

이 솔루션은 문제의 회전 부분이 아닌 작물을 다루는 주장하고있다. 그것이 주장하는 것을하고 있지만 더 이상은 아닙니다.

CGImageRef CGImageCreateWithImageInRect (
    CGImageRef image, 
    CGRect rect 
); 

입력하면 이미지와 당신이 자르려 지역의 RECT :

여기에 작물을 수행하는 CG 기능입니다.

는 예를 들어, 사용하기 위해 여기에 답변을 참조하십시오 :
Cropping an UIImage

+0

OP는 작동하지 않는다고 말하는 곳은 어디입니까? 이 솔루션을 기반으로 작동하게하려면 어떻게해야합니까? CGContextDrawImage가 그리기로되어 있고 또 다른 이미지를 이미지화했기 때문에 그렇지 않습니까? – Dejell

+0

@Odelya, 내가 잘못 읽은 것을 유감스럽게 생각합니다. 내 대답 – foundry

+0

업데이트했습니다 그 작동하지 않을 것이다. 오리엔테이션 변경을하기 전에 사용자가 오리 엔테이션을 고려하지 않기 때문에 (오리 엔테이션 변경 이전에 이미지를 자른 것) - 작동하는지는 의심 스럽지만 지금은 기회가 될 것입니다. – Dejell