可能重复:
Need to retain original quality of image while rotating in 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;
}
先谢谢。
答案 0 :(得分:0)
您可以创建原始图像的副本,更改方向,如下所示:
CGImageRef imageRef = [img CGImage];
UIImage *rotatedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp];
您必须在每个条件中放置第二行,并将orientation参数更改为每种情况的正确值,请查看doc以获取更多信息
答案 1 :(得分:0)
在视图级别旋转将保留位图保真度(即,它不会触摸它)。
即:
#define DEG2RAD(d) (M_PI * d / 180.0)
...
_imageView.transform = CGAffineTransformMakeRotation(DEG2RAD(45));
不幸的是,您需要查看带有内边框的旋转图像的抗锯齿。这已经在这里得到了解答。
希望这有帮助!