1

UIImage または UIImageView を回転させたい、多くのコードを試し、どこでも検索しましたが、有効な解決策が見つかりません。問題を説明しています。Web から画像をダウンロードしてサイズを変更します。この上:

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
return newImage;
}

サイズ変更は非常にうまく機能し、UIImageView に UIImage をアタッチしてから、UIImageView を次のように回転させました。

self.myImageView.transform = CGAffineTransformMakeRotation(degreesToRadian(-2));

しかし、この方法では境界線がピクセル化され、エイリアシングが発生するため、最初に UIImage を回転させてから、画像を UIImageView に渡そうとしましたが、多くの同様のコードが見つかりました。特に、このクラスの拡張機能を使用します。

http://www.catamount.com/forums/viewtopic.php?f=21&t=967

このようにして、境界線はアンチエイリアス化されますが、代わりに画像の品質が低下し、よりあいまいになり、最初に回転させるようにシャープではありません。誰かが良い解決策を持っていますか?

ありがとう...

4

1 に答える 1

0

画像を回転するには..このIBActionを使用できます...ボタンをクリックするたびに、画像が90度回転します...

-(IBAction)rotateImageClick:(id)sender{

UIImage *image2=[[UIImage alloc]init];
image2 = [self imageRotatedByDegrees:self.roateImageView.image deg:(90)]; //Angle by 90 degree
self.roateImageView.image = image2;
imgData= UIImageJPEGRepresentation(image2,0.9f);

}

画像を回転させるには、次のメソッドに UIimage と回転度を渡すだけです。

- (UIImage *)imageRotatedByDegrees:(UIImage*)oldImage deg:(CGFloat)degrees

//------------------------------------------------ ------------------------

#pragma mark - imageRotatedByDegrees Method

- (UIImage *)imageRotatedByDegrees:(UIImage*)oldImage deg:(CGFloat)degrees{

    // calculate the size of the rotated view's containing box for our drawing space
    UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,oldImage.size.width, oldImage.size.height)];

    CGAffineTransform t = CGAffineTransformMakeRotation(degrees * M_PI / 180);
    rotatedViewBox.transform = t;

    CGSize rotatedSize = rotatedViewBox.frame.size;
    // Create the bitmap context
    UIGraphicsBeginImageContext(rotatedSize);
    CGContextRef bitmap = UIGraphicsGetCurrentContext();

    // Move the origin to the middle of the image so we will rotate and scale around the center.
    CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);

    //   // Rotate the image context
    CGContextRotateCTM(bitmap, (degrees * M_PI / 180));

    // Now, draw the rotated/scaled image into the context
    CGContextScaleCTM(bitmap, 1.0, -1.0);
    CGContextDrawImage(bitmap, CGRectMake(-oldImage.size.width / 2, -oldImage.size.height / 2, oldImage.size.width, oldImage.size.height), [oldImage CGImage]);

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

}

このリンクが役立つと思います.......! Objective Cのボタンをクリックして元の画像を回転させる

http://adrianmobileapplication.blogspot.com/2015/03/rotate-original-image-by-clicking.html

于 2015-03-02T11:19:26.730 に答える