2013-03-28 2 views
0

У меня возникли проблемы с созданием изображения с высоким разрешением из преобразованных изображений UIImageView. У меня есть представление холста, которое содержит несколько представлений, преобразованных пальцами пользователя. Итак, я пытаюсь отобразить изображение этих представлений на основе их трансформаций. Вот код, который я использую для представления.Создание изображения с высоким разрешением из преобразованных изображений 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