Получение изображения от вращающегося кала - PullRequest
0 голосов
/ 26 января 2012

Я пытаюсь получить изображение от calayer, который я ранее вращал:

//Creates the rotation affine transform
m_transformada = CGAffineTransformIdentity;
m_transformada = CGAffineTransformRotate(m_transformada, M_PI / 4);
// Apply the affine transform to a UIVIewImage object
m_PhotoView.transform = m_transformada;

// Get's the UIImage from the UIViewImage
UIGraphicsBeginImageContext([m_PhotoView.layer frame].size);
[m_PhotoView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Выходное изображение не поворачивается ... кто-нибудь знает почему? Спасибо,

1 Ответ

1 голос
/ 26 января 2012

Преобразование на слое влияет на его геометрию в суперслое, а не на сам слой.

Нечто подобное будет работать (это должно быть смешано и / или иным образом адаптировано):

- (UIImage*)renderToImageRotated:(float)scale {
  float tx = self.frame.size.width;
  float ty = self.frame.size.height;
  CGSize size = CGSizeMake(self.frame.size.height, self.frame.size.width);
  UIGraphicsBeginImageContextWithOptions(size, NO, scale);
  CGContextRef c = UIGraphicsGetCurrentContext();
  CGContextTranslateCTM (c, ty/2, tx/2);
  CGContextRotateCTM(c, M_PI/2);
  CGContextTranslateCTM (c, -tx/2, -ty/2);
  [self.layer renderInContext:c];
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();  
  return image;
}
...