0

回転画像を 90 度回転させようとしています。回転しなくても機能しますが、回転して移動すると表示されません。私は何を間違っていますか?

            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;
4

3 に答える 3

2

画像ビューを使用することをお勧めし、その変換を次のように使用します。

UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath];
UIImageView *newImageView = [[UIImageView alloc] initWithImage:newImage]; 
newImageView.transform = CGAffineTransformMakeRotation(M_PI_2); 
于 2012-11-13T14:24:58.137 に答える
0

問題は定義ステートメントであり、画像を反転する必要がありました。完成したコードは次のとおりです: ( 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);
于 2012-11-13T15:20:28.183 に答える
0

やったほうがいい:

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();

幸運を。

アップデート:

実際、これは「UIImage を 90 度回転させる方法」からの複製です。

于 2012-11-13T14:34:11.587 に答える