2013-03-28 2 views
0

변환 된 UIImageViews에서 고해상도 이미지를 생성하는 데 어려움을 겪고 있습니다. 사용자 손가락으로 변형 된 여러보기가 포함 된 캔버스보기가 있습니다. 그래서 저는 그것들의 변형을 기반으로 한 뷰의 이미지를 렌더링하려고합니다. 다음은 뷰에 사용하는 코드 스냅입니다.변형 된 UIImageViews에서 고해상도 이미지 생성

CGSize canvasSize = CGSizeMake(HIRES_WIDTH, HIRES_WIDTH); 
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(HIRES_WIDTH/canvasView.frame.size.width, HIRES_WIDTH/canvasView.frame.size.width); 

UIGraphicsBeginImageContext(canvasSize); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSaveGState(context); 
CGPoint center = imageView.center; 
CGSize size = imageView.bounds.size; 
CGRect frame = CGRectMake(center.x - size.width, center.y - size.height, size.width, size.height); 

CGAffineTransform transform = CGAffineTransformIdentity; 
transform = CGAffineTransformTranslate(transform, size.width/2, size.height/2); 
transform = CGAffineTransformConcat(transform, photoImageView.transform); 
transform = CGAffineTransformConcat(transform, scaleTransform); 
CGContextConcatCTM(context, transform); 

[photoImageView.image drawInRect:frame]; 

CGContextRestoreGState(context); 

UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

하지만 최종 이미지에서 오프셋 차이가 나타납니다. 조언을 주시면 감사하겠습니다.

감사합니다. 이 설정을 변경하는

+0

HIRES_WIDTH? HIRES_WIDTH? – m177312

답변

0

시도 : 여기에

CGRect frame = CGRectMake(center.x - size.width, center.y - size.height, size.width, size.height); 

:

CGRect frame = CGRectMake(center.x - size.width/2, center.y - size.height/2, size.width, size.height); 
+0

그것은 나를 도와주지 않았다. 오프셋 차이는 UIImageView 변환의 축척 비율에 따릅니다. – Pei