如何将旋转图像保存在 iPhone 相册中?
Posted
技术标签:
【中文标题】如何将旋转图像保存在 iPhone 相册中?【英文标题】:How to save the rotate image in iphone album? 【发布时间】:2013-02-07 11:08:56 【问题描述】:当我点击视图并且图像旋转成功但旋转后的图像没有保存在 iPhone 相册中时,我可以旋转图像。
当我点击保存按钮时,上一张图片正在保存在相册中,请任何人帮助我
- (void) touchesBegan:(NSSet *)_touches withEvent:(UIEvent *)_event
UITouch* touch = [_touches anyObject];
CGPoint location = [touch locationInView:m_block];
m_locationBegan = location;
- (void) touchesMoved:(NSSet *)_touches withEvent:(UIEvent *)_event
UITouch* touch = [_touches anyObject];
CGPoint location = [touch locationInView:m_block];
[self updateRotation:location];
- (void) touchesEnded:(NSSet *)_touches withEvent:(UIEvent *)_event
UITouch *touch=[_touches anyObject];
CGPoint location = [touch locationInView:m_block];
m_currentAngle = [self updateRotation:location];
- (float) updateRotation:(CGPoint)_location
float fromAngle = atan2(m_locationBegan.y-m_block.center.y, m_locationBegan.x-m_block.center.x);
float toAngle = atan2(_location.y-m_block.center.y, _location.x-m_block.center.x);
float newAngle = wrapd(m_currentAngle + (toAngle - fromAngle), 0, 2*3.14);
CGAffineTransform cgaRotate = CGAffineTransformMakeRotation(newAngle);
m_block.transform = cgaRotate;
int oneInFifty = (newAngle*50)/(2*3.14);
m_label.text = [NSString stringWithFormat:@"Angle: %f 1in50: %i", newAngle, oneInFifty];
return newAngle;
- (IBAction)saveImageToAlbum
[self.library saveImage:m_block.image toAlbum:@"My" withCompletionBlock:^(NSError *error)
if (error!=nil)
NSLog(@"Big error: %@", [error description]);
];
UIImage *image = m_block.image;
NSUserDefaults * user= [NSUserDefaults standardUserDefaults] ;
[user setObject:UIImagePNGRepresentation(image) forKey:@"foo"];
[user synchronize];
[self dismissViewControllerAnimated:YES completion:nil];
【问题讨论】:
【参考方案1】:我认为您正在使用自定义 UIView 或 UIImageView。
您可以通过以下代码保存任何视图的当前外观:
+ (UIImage *) imageWithView:(UIView *)view
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
我从:How to capture UIView to UIImage without loss of quality on retina display得到这个
这对我来说效果很好。
一切顺利...
【讨论】:
我得到了您在我的代码中看到的角度,那么如何在该图像中传递该角度? 我已经尝试过这段代码,但它不起作用你可以在我的代码中看到我正在重新调整角度。那个角度我必须保存然后怎么做请解决我的问题.. 不工作,但你在图像中得到了什么?空白图片 上一张图片?或任何错误 架构 i386 的未定义符号:“_OBJC_IVAR_$_UIViewController._view”,引用自:ViewController.o ld 中的 -[ViewController captureView]:未找到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 这不是代码错误,这是构建错误。你可以看到“链接器命令失败”以上是关于如何将旋转图像保存在 iPhone 相册中?的主要内容,如果未能解决你的问题,请参考以下文章