如何将转换后的UIImageview图像分配给其他UIImageview?

时间:2012-09-10 10:58:30

标签: iphone uiimageview uiimage cgaffinetransform

在我的应用程序中,我正在应用不同类型的转换,例如向左旋转,向右旋转,翻转垂直,水平翻转到UIImageview。应用这些操作后,UIImageview的位置会发生变化。我希望将此更改的图像分配给其他视图,而不是原始图像。当我将imageview.image分配给另一个视图时,它正在分配原始图像。我怎么能纠正这个?

正如David所建议的那样。我正在为左旋转应用以下代码

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

但我没有得到旋转的图像。图像处于原始位置

2 个答案:

答案 0 :(得分:0)

转换完成后会捕获更新的图像:

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

现在将这些capImage分配给另一个带有变换图像的UIImageView

答案 1 :(得分:0)

您应该在上下文中进行更改,并在完成后将其保存到UIImage。然后在imageview中设置该图像:

UIGraphicsBeginImageContext(sizeOfImage);


    CGAffineTransform transform = CGAffineTransformIdentity;

等等

    CGContextConcatCTM(UIGraphicsGetCurrentContext(), transform);
[imageView.image drawInRect:CGRectMake(position.x, position.y, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();