UIImageView:旋转和缩放。如何保存结果?
Posted
技术标签:
【中文标题】UIImageView:旋转和缩放。如何保存结果?【英文标题】:UIImageView: Rotated and Scaled. How do I save the results? 【发布时间】:2009-11-30 22:10:29 【问题描述】:我正在尝试将旋转和缩放的 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;
【问题讨论】:
【参考方案1】:我在您发布的代码中看不到任何会旋转图像的内容。你忘了添加吗?
看起来您走在正确的轨道上。现在你应该使用变换例程CGContextScaleCTM
和CGContextRotateCTM
来适当地修改你的变换矩阵,然后(为了避免翻转)使用-[UIImage drawAtPoint:]
来绘制UIImage 而不是使用CGContextDrawImage
。
【讨论】:
旋转发生在 touchImageView 中,然后我想将旋转后的图像保存为一个圆圈。对不起,如果我不清楚。 你不能那样做。旋转 UIImageView 时,UIImage 本身不会旋转。如果你想保存它,你必须在绘制它之前自己旋转它。有关如何执行此操作,请参见我上面的答案。【参考方案2】:基于视图的转换应用于上下文的输出而不是上下文本身。我相信您必须使用link textcore 图形的特定功能来缩放和旋转图像上下文本身。
(我可能是错的。我不记得我过去是如何做到这一点的。对此持保留态度。)
【讨论】:
以上是关于UIImageView:旋转和缩放。如何保存结果?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIImageView 中居中缩放(旋转)UIImage