UIImageView: повернутый и масштабированный. Как мне сохранить результаты? - PullRequest
0 голосов
/ 01 декабря 2009

Я пытаюсь сохранить повернутый и масштабированный UIImageView как UIImage в позиции и со шкалой масштабирования, которую также редактировал пользователь. Но я могу только сохранить исходное изображение, как это было до редактирования. Как я могу сохранить изображение, как оно показано в UIImageView с тем же масштабированием и вращением? Я прочитал, что мне нужно использовать UIGraphicsGetCurrentContext (), но я получаю то же исходное изображение, сохраненное (но перевернутое), а не повернутое !! Предложения и подсказки были бы действительно полезны. Заранее спасибо. Al

(UIImage *)getImage
{
CGSize size = CGSizeMake(250, 250);
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();

// Add circle to path
CGPathAddEllipseInRect(path, NULL, CGRectMake(0, 0, 250, 250));
CGContextAddPath(context, path);

// ****************** touchImageView is my UIImageView ****************//
CGContextDrawImage(context, CGRectMake(0, 0, 250, 250), [touchImageView image].CGImage);

UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();

// Clip to the circle and draw the logo
CGContextClip(context);
UIGraphicsEndImageContext();

return scaledImage;

}

Ответы [ 2 ]

1 голос
/ 02 декабря 2009

В коде, который вы разместили, я не вижу ничего, что могло бы повернуть изображение. Вы забыли добавить это?

Похоже, вы на правильном пути. Теперь вы должны использовать подпрограммы преобразования CGContextScaleCTM и CGContextRotateCTM, чтобы соответствующим образом изменить матрицу преобразования, а затем (чтобы избежать переворота) используйте -[UIImage drawAtPoint:], чтобы нарисовать UIImage вместо использования CGContextDrawImage.

1 голос
/ 01 декабря 2009

Преобразования на основе представления применяются к выводу контекста, а не к самому контексту. Я считаю, что вам нужно масштабировать и вращать сам контекст изображения, используя текст ссылки основных графических функций.

(Я могу ошибаться. Я не могу вспомнить, как именно я делал это в прошлом. Возьми это с крошкой соли.)

...