-1

私のアプリケーションでは、左に回転、右に回転、垂直を反転、水平に反転など、さまざまな種類の変換を適用していUIImageviewます。これらの操作を適用すると、位置がUIImageview変わります。この変更された画像を元の画像ではなく、他のビューに割り当てたいと思います。imageview.image他のビューに割り当てると、元の画像が割り当てられます。どうすればこれを修正できますか?

David.Iが提案したように、左回転に次のコードを適用しています

//rotation left;
        int x1=ivPhoto.frame.origin.x;
        int y1=ivPhoto.frame.origin.y;

        UIGraphicsBeginImageContext(ivPhoto.image.size);


        CGAffineTransform transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(degrees2));        

        CGContextConcatCTM(UIGraphicsGetCurrentContext(), transform);
         [ivPhoto.image drawInRect:CGRectMake(x1,y1,ivPhoto.frame.size.width, ivPhoto.frame.size.height)];

        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

        ivPhoto.image=newImage;

しかし、私は回転した画像を取得していません。画像は元の位置にあります

4

2 に答える 2

0

変換が完了したら、次のように新しい画像をキャプチャします。

CGSize fittingSize = yourImgView.frame.size;
UIGraphicsBeginImageContext(fittingSize);
[yourImgView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImahe *capImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これらの capImage を、変換された画像を持つ別の UIImageView に割り当てます

于 2012-09-10T11:06:32.680 に答える
0

コンテキストで変更を行い、完了したら UIImage に保存する必要があります。次に、その画像をイメージビューに設定します。

UIGraphicsBeginImageContext(sizeOfImage);


    CGAffineTransform transform = CGAffineTransformIdentity;

などなど

    CGContextConcatCTM(UIGraphicsGetCurrentContext(), transform);
[imageView.image drawInRect:CGRectMake(position.x, position.y, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
于 2012-09-10T11:07:38.513 に答える