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

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

我已经按照这个答案 。 但是在这个解决scheme中,当我旋转时,顶部图像被剪切 模拟器 在这里输入图像说明

实际存储的图像是像文件一样 在这里输入图像说明

我已经尝试这个代码

bottomImg的_parentViewGIf和topImg的_ivGIF

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

提前感谢您的帮助或build议