我正在制作一个从相机加载图像的iPhone应用程序,然后用户可以从库中选择第二个图像,移动/缩放/旋转第二个图像,然后保存结果。我在IB中使用两个UIImageViews作为占位符,然后在触摸/捏合时应用转换。
当我必须将两个图像保存在一起时,问题出现了。我使用第一张图片大小的矩形并将其传递给UIGraphicsBeginImageContext
。然后我尝试使用CGContextConcatCTM
,但我无法理解它是如何工作的:
CGRect rect = CGRectMake(0, 0, img1.size.width, img1.size.height); // img1 from camera
UIGraphicsBeginImageContext(rect.size); // Start drawing
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextClearRect(ctx, rect); // Clear whole thing
[img1 drawAtPoint:CGPointZero]; // Draw background image at 0,0
CGContextConcatCTM(ctx, img2.transform); // Apply the transformations of the 2nd image
但接下来我需要做什么? img2.transform矩阵中包含哪些信息? CGContextConcatCTM
的文档不幸地帮助了我。
现在我试图通过使用三角函数计算点数和角度来解决它(在this answer的帮助下),但是由于转换就在那里,所以必须有一种更简单,更优雅的方法来做到这一点,对吗?
答案 0 :(得分:0)
看看这个优秀的答案,你需要创建一个位图/图像上下文,绘制它,并获得结果图像。然后你可以保存它。 iOS UIImagePickerController result image orientation after upload