Ios 使用旋转和缩放合并两个不同大小的图像

Ios 使用旋转和缩放合并两个不同大小的图像,ios,objective-c,merge,uiimage,cgcontext,Ios,Objective C,Merge,Uiimage,Cgcontext,我面临以下问题:我必须合并两个图像bottomImg和topImg,以创建一个新的图像C作为合并的结果。 我已经知道如何合并两个图像,但在这种情况下,我的目标有点不同。 顶部图像可以缩放和旋转 我必须跟上。但在这个解决方案中,顶部图像在我旋转时被剪切。模拟机 实际存储的图像类似于文档 我尝试过这个代码 _parentViewGIf表示底部img,而_ivGIF表示顶部img - (UIImage *)mergeImage:(UIImage *)bottomImg withImage:(UIIma

我面临以下问题:我必须合并两个图像bottomImg和topImg,以创建一个新的图像C作为合并的结果。 我已经知道如何合并两个图像,但在这种情况下,我的目标有点不同。 顶部图像可以缩放和旋转

我必须跟上。但在这个解决方案中,顶部图像在我旋转时被剪切。模拟机

实际存储的图像类似于文档

我尝试过这个代码

_parentViewGIf表示底部img,而_ivGIF表示顶部img

- (UIImage *)mergeImage:(UIImage *)bottomImg withImage:(UIImage *)topImg {


    float width=bottomImg.size.width*_ivGIF.frame.size.width/_parentViewGIf.frame.size.width;
    float height=bottomImg.size.width*_ivGIF.frame.size.height/_parentViewGIf.frame.size.width;

    UIImage * scaledTopImg = [self imageByScalingProportionallyWithImage:topImg ToSize:CGSizeMake(bottomImg.size.width, bottomImg.size.height)];

    UIGraphicsBeginImageContext(scaledTopImg.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(ctx, scaledTopImg.size.height * 0.5, scaledTopImg.size.height * 0.5);
    CGFloat angle = atan2(_ivGIF.transform.a, _ivGIF.transform.b);
    CGContextRotateCTM(ctx, angle);
    [scaledTopImg drawInRect:CGRectMake(- scaledTopImg.size.width * 0.5f, -(scaledTopImg.size.height  * 0.5f), scaledTopImg.size.width , scaledTopImg.size.height )];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    float x=bottomImg.size.width*_ivGIF.frame.origin.x/_parentViewGIf.frame.size.width;
    float y=bottomImg.size.width*_ivGIF.frame.origin.y/_parentViewGIf.frame.size.width;


    UIGraphicsBeginImageContext(bottomImg.size);
    [bottomImg drawInRect:CGRectMake(0, 0, bottomImg.size.width, bottomImg.size.height)];
    [newImage drawInRect:CGRectMake(0, 0, newImage.size.width, newImage.size.height)];
    UIImage *newImage2 = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage2;
}

提前感谢您提供的任何帮助或建议

将其缩放到合适的位置。使用线段相交来计算正确的比例。@Andy抱歉,我听不懂你说的话。你能指定你想要的实际结果图像吗。@MiteshDobareeya我想要像模拟器一样的图像(第一幅图像)是的,但是如果topImage是缩放和旋转的,那么。。??我想你想要的结果就像第二张图片。对吧?缩放到合适的位置。使用线段相交来计算正确的比例。@Andy抱歉,我听不懂你说的话。你能指定你想要的实际结果图像吗。@MiteshDobareeya我想要像模拟器一样的图像(第一幅图像)是的,但是如果topImage是缩放和旋转的,那么。。??我想你想要的结果就像第二张图片。正确的?