UIImageView:旋转和缩放。如何保存结果?

时间:2009-11-30 22:10:30

标签: iphone graphics uiview uiimage save

我正在尝试将旋转和缩放的UIImageView保存为位置中的UIImage,并使用用户编辑的缩放比例。但我只能设法保存原始图像,因为它是在编辑之前。如何以相同的缩放和旋转保存UIImageView中显示的图像?我已经读过我需要使用UIGraphicsGetCurrentContext()但是我得到了相同的原始图像保存(但翻转)而不是旋转的图像!建议和提示将非常有用。 先感谢您。 人

(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 个答案:

答案 0 :(得分:1)

基于视图的变换应用于上下文的输出而不是上下文本身。我相信你必须使用link text核心图形的特定功能来缩放和旋转图像上下文。

(我可能是错的。我不记得过去我是怎么做到的。用一粒盐来做这件事。)

答案 1 :(得分:1)

我发布的代码中没有任何可以旋转图像的内容。你忘记添加了吗?

看起来你走在正确的轨道上。现在,您应该使用转换例程CGContextScaleCTMCGContextRotateCTM来适当地修改转换矩阵,然后(为了避免翻转),使用-[UIImage drawAtPoint:]绘制UIImage而不是使用{{1 }}