Iphone 图像旋转不正确
旋转我正在尝试将我的图像旋转90度。它在没有旋转的情况下工作,但当我旋转和平移时,它不会显示。我做错了什么Iphone 图像旋转不正确,iphone,ios,image,cocoa,Iphone,Ios,Image,Cocoa,旋转我正在尝试将我的图像旋转90度。它在没有旋转的情况下工作,但当我旋转和平移时,它不会显示。我做错了什么 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"check" ofType:@"jpg"]; UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath]; UIGraphicsBeginImageContext
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"check" ofType:@"jpg"];
UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath];
UIGraphicsBeginImageContext(newImage.size);
//CGContextRef c = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), newImage.size.width, 0);
//CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, newImage.size.width);
//CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0);
CGContextRotateCTM(UIGraphicsGetCurrentContext(), 90);
CGRect imageRect = CGRectMake(0, 0, newImage.size.height, newImage.size.width);
CGContextDrawImage(UIGraphicsGetCurrentContext(), imageRect, newImage.CGImage);
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
ImageView.image = viewImage;
我建议使用图像视图并使用它的变换,如下所示:
UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath];
UIImageView *newImageView = [[UIImageView alloc] initWithImage:newImage];
newImageView.transform = CGAffineTransformMakeRotation(M_PI_2);
你应该做:
UIGraphicsBeginImageContext(newImage.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextRotateCTM (context, 90* M_PI/180); //Degrees should be in radians.
[newImage drawAtPoint:CGPointMake(0, 0)];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
祝你好运
更新:
实际上,这是从复制的。问题是我的define语句,我需要翻转图像。以下是完整的代码:(图像必须是完美的,因为OCR会处理图像,如果图像有点失真,就会被拒绝
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSaveGState(c);
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"check" ofType:@"jpg"];
UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath];
NSLog(@"Rect width: %@", NSStringFromCGSize(newImage.size) );
UIGraphicsBeginImageContext(newImage.size);
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, newImage.size.width);
CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0);
CGContextTranslateCTM( UIGraphicsGetCurrentContext(), 0.5f * newImage.size.width, 0.5f * newImage.size.height ) ;
CGContextRotateCTM( UIGraphicsGetCurrentContext(), radians( -90 ) ) ;
CGRect imageRect = CGRectMake(-(newImage.size.height* 0.5f) + 200, -(0.5f * newImage.size.width) + 200 , newImage.size.height - 200, newImage.size.width - 200);
CGContextDrawImage(UIGraphicsGetCurrentContext(), imageRect, newImage.CGImage);
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
ImageView.image = viewImage;
CGContextRestoreGState(c);
检查另一个问题CGContextRotateCTM使用弧度表示的角度。因此M_PI_2表示90度。我不能使用图像视图,因为此图像必须发送到服务器进行图像授权。您始终可以使用
newImageView直接从imageview访问图像。image