Необходимо сохранить качество изображения при повороте этого изображения в 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];
Вы должны поставить вторую строку в каждом из ваших условий и изменить параметр ориентации на правильное значение для каждого случая, проверьте документ для получения дополнительной информации