我想用UIslider控件旋转图像 .
我用以下功能完成了这个
- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration
curve:(int)curve degrees:(CGFloat)degrees
{
// Setup the animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:curve];
[UIView setAnimationBeginsFromCurrentState:YES];
// The transform matrix
CGAffineTransform transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(degrees));
image.transform = transform;
// Commit the changes
[UIView commitAnimations];}
通过使用此功能它将完美但但问题是我无法保存旋转的图像参考 . 我必须使用旋转的图像进行进一步处理 .
那么如何保存处于旋转位置的图像?
请帮我解决这个问题
谢谢
5 回答
我找到了问题的解决方案
使用以下方法
用这个方法调用
其中rotation是0到360之间的sliderValue .
现在我们可以保存旋转状态 .
我尝试了上面的代码,它正在工作,但仅适用于SQUARE图像,这是另一个有效的解决方案,它将重绘图像并保持正确的宽度/高度:
}
这里的旋转参数是Radian . 您可以通过在函数上方添加此转换(或直接在.m文件中)来执行转换
最后,我用动画调用了这个:
我希望这也有帮助!
干杯 .
进一步处理的一种方法是按顺序应用更多转换,如:
在这种情况下,您可以对旋转的图像应用缩放 .
如果您需要保存此信息以便能够在稍后的某个时间点重做转换,则可以简单地存储旋转角度,缩放系数(在我的示例中)以及再次构建转换 .
您还可以考虑将
CGAffineTransform
存储在您的 class 或其他机制的ivar中 .编辑:
如果通过保存意味着保存到文件,您可以使用以下代码将视图转换为图像:
然后将NSData保存到文件中
对于PNG:
您可以将旋转的图像渲染到另一个图像中:
然后从中获取PNG数据并将其保存到文件中
Proviso,我把它键入StackOverflow,而不是编译器:-)
保存UIImageView的变换值,并在下次要使用此UIImageView或甚至在另一个UIImageView中时应用此变换值 .