Я создаю приложение для iPhone, которое загружает изображение с камеры, а затем пользователь может выбрать второе изображение из библиотеки, переместить / масштабировать / повернуть это второе изображение и затем сохранить результат. Я использую два UIImageViews в IB в качестве заполнителей, а затем применяю преобразования, касаясь / сжимая.
Проблема возникает, когда мне нужно сохранить оба изображения вместе. Я использую прямоугольник размером с первое изображение и передаю его 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
мне не очень помогает ..
Прямо сейчас я пытаюсь решить эту проблему путем вычисления точек и угла с помощью тригонометрии (с помощью этот ответ ), но, поскольку преобразование есть, должен быть более простой и более гибкий способ сделать это, верно?