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】:

我在您发布的代码中看不到任何会旋转图像的内容。你忘了添加吗?

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

【讨论】:

旋转发生在 touchImageView 中,然后我想将旋转后的图像保存为一个圆圈。对不起,如果我不清楚。 你不能那样做。旋转 UIImageView 时,UIImage 本身不会旋转。如果你想保存它,你必须在绘制它之前自己旋转它。有关如何执行此操作,请参见我上面的答案。【参考方案2】:

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

(我可能是错的。我不记得我过去是如何做到这一点的。对此持保留态度。)

【讨论】:

以上是关于UIImageView:旋转和缩放。如何保存结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIImageView 中居中缩放(旋转)UIImage

UIImageView 手势(缩放、旋转)问题

如何保存 UIImage 或 UIImageView 的状态?

缩放、旋转和拖动 UIImageView

拖动、缩放和旋转多个 UIImageview

iOS 如何为旋转、缩放和将 UIView 添加到 UIIMageView 进行撤消操作