我正在制作一个iPhone应用程序,从相机加载图像,然后用户可以从库中选择第二个图像,移动/缩放/旋转第二个图像,然后保存结果。我在IB中使用两个UIImageView作为占位符,然后在触摸/捏合时应用转换。iPhone:如何使用CGContextConcatCTM正确保存转换后的图像?
问题出现在我必须将两个图像保存在一起时。我使用第一张图像的大小的矩形并将其传递给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的帮助下)计算点和角度来解决它,但是由于转换已经存在,做一个更容易,更优雅的方式来做到这一点,对吗?
我想问题是,Quartz应用从左上角转换:/我仍然不知道如何解决它。 – kubbing 2011-11-14 14:10:10