Необходимо сохранить качество изображения при повороте этого изображения в iPhone

Возможный дубликат:
Необходимо сохранить оригинальное качество изображения при вращении в iPhone SDK

В моем приложении я могу повернуть изображение на 90 градусов. Когда я поворачиваюсь несколько раз... он становится размытым (отсутствует четкость пикселей). Я потерял качество IMG. Может кто-нибудь предложить способ реализации этого.

Здесь я использовал кнопку для поворота изображения. Код, используемый для вращения:

- (UIImage *)rotateImage:(UIImage *) img
{

     CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height);
     UIGraphicsBeginImageContext(rect.size);

     CGContextRef context = UIGraphicsGetCurrentContext();


     if (img.imageOrientation == UIImageOrientationRight) 
     {
          CGContextRotateCTM (context, M_PI_2);
     } 

     else if (img.imageOrientation == UIImageOrientationLeft) 
     {
          CGContextRotateCTM (context, -(M_PI_2));
     }

     else if (img.imageOrientation == UIImageOrientationDown) 
     {
          // NOTHING
     } 

     else if (img.imageOrientation == UIImageOrientationUp) 
     {
         CGContextRotateCTM (context, M_PI_2);
     }

     //CGContextRotateCTM(context, M_PI_2);

     CGContextTranslateCTM(context,0, -(img.size.width));
     [img drawInRect:CGRectMake(0, 0, img.size.height,img.size.width)];


     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
     appDelegate.savedImage=newImage;

     UIGraphicsEndImageContext();
     CGContextRelease(context);
     return newImage;
     }

Заранее спасибо.

2 ответа

Вращение на уровне представления сохранит верность растрового изображения (а именно, оно не затрагивает его).

то есть:

#define DEG2RAD(d) (M_PI * d / 180.0)
...
_imageView.transform = CGAffineTransformMakeRotation(DEG2RAD(45));

К сожалению, вам нужно посмотреть на сглаживание повернутого изображения с внутренней границей. Это уже было здесь ответили раньше.

Надеюсь это поможет!

Вы можете создать копию исходного изображения, меняя ориентацию следующим образом:

CGImageRef imageRef = [img CGImage];
UIImage *rotatedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp];

Вы должны поставить вторую строку в каждом из ваших условий и изменить параметр ориентации на правильное значение для каждого случая, проверьте документ для получения дополнительной информации

Другие вопросы по тегам