Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

拍照后保存图片不成功——大家请参考 @MrVokie 的方法,排查下项目里是否引入了对NSDictionary做swizzle,以允许字典里插入空值的类 #308

Closed
tanhuiya opened this issue Dec 13, 2016 · 16 comments
Labels

Comments

@tanhuiya
Copy link

拍照后保存图片不成功,iOS10.0

@banchichen
Copy link
Owner

你好,麻烦提供更多信息...比如控制器是否有提示,界面的变化是怎样的... 只根据目前的信息无法分析问题....
首先需要明确的是:

  1. 是在我的Demo中还是你的项目中?
  2. 是否禁止了相册权限?
  3. 当前使用的TZImagePickerController版本是多少?

@tanhuiya
Copy link
Author

demo 是好的,相机权限是有的,我的项目,TZImageManager 里savePhotoWithImage 函数保存图片出错。

@tanhuiya
Copy link
Author

tanhuiya commented Dec 13, 2016

@banchichen
版本1.7.6 ,没有用pod 集成,手动拷贝代码引入

@banchichen
Copy link
Owner

你好,如果保存失败,savePhotoWithImage会返回一个NSError对象的,请打印下NSError对象然后贴上来看一下。

@tanhuiya
Copy link
Author

tanhuiya commented Dec 13, 2016

@banchichen
2016-12-13 16:43:16.529981 parent[2794:1678860] 保存照片出错:未能完成操作。(“Cocoa”错误 -1。)
Printing description of error:
Error Domain=NSCocoaErrorDomain Code=-1 "(null)"

@banchichen
Copy link
Owner

如果Demo是好的,导入你的项目后这样报错,建议先检查info.plist中的相册权限key:Privacy - Photo Library Usage Description是否有添加,如果没有添加,是会有日志输出的,需要细心留意... 如果这个也添加了,那根据目前的信息又无法进一步分析了...

@tanhuiya
Copy link
Author

都是有的,我是想换了一个库而已,这边可能是什么问题,你的代码没有动,工程相关的?

@tanhuiya
Copy link
Author

保存图片时有打印信息

error Error Domain=NSCocoaErrorDomain Code=3851 "Property list invalid for format: 200 (property lists cannot contain objects of type 'CFNull')" UserInfo={NSDebugDescription=Property list invalid for format: 200 (property lists cannot contain objects of type 'CFNull')

@banchichen
Copy link
Owner

那就比较奇怪了... 目前来看不是很好分析...

@banchichen
Copy link
Owner

保存图片失败的,除了以上我已经说过的猜测,还有可能是内存满了,savePhotoWithImage方法传进去的图片是nil。

@tanhuiya
Copy link
Author

图片是有的,不是nil,[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetResourceCreationOptions *options = [[PHAssetResourceCreationOptions alloc] init];
options.shouldMoveFile = YES;
[[PHAssetCreationRequest creationRequestForAsset] addResourceWithType:PHAssetResourceTypePhoto data:data options:options];
} completionHandler:^(BOOL success, NSError * _Nullable error) {
dispatch_sync(dispatch_get_main_queue(), ^{
if (success && completion) {
completion(nil);
} else if (error) {
NSLog(@"保存照片出错:%@",error.localizedDescription);
if (completion) {
completion(error);
}
}
});
}];

这个方法失败

@Slience2015
Copy link

ISO 10.2 一样的状况啊

@banchichen banchichen added the bug label Apr 1, 2017
@MrVokie
Copy link

MrVokie commented Apr 19, 2017

我去除项目NSDictionary的swizzle防止崩溃代码后就可以正常保存了。

@Msyong
Copy link

Msyong commented Apr 25, 2017

我也遇到了这样的问题.iOS 10.3.1系统第一次拍照 获取不到相册的权限,导致拍照无法存到相册。

@banchichen
Copy link
Owner

@Msyong 你这个情况,请升级新版哈...

研究了下这个报错,应该是往字典里插入了空值导致的...
大家请参考 @MrVokie 的方法排查下项目里是否引入了对NSDictionary做swizzle,以允许字典里插入空值的类(很可能是在你项目里的哪个第三方中)

也可以参考下这个issue:#481

还有问题请大家在新的issue下评论哈

@banchichen banchichen changed the title 拍照后保存图片不成功,iOS10.0 拍照后保存图片不成功——大家请参考 @MrVokie 的方法排查下项目里是否引入了对NSDictionary做swizzle,以允许字典里插入空值的类 Jun 12, 2017
@banchichen banchichen changed the title 拍照后保存图片不成功——大家请参考 @MrVokie 的方法排查下项目里是否引入了对NSDictionary做swizzle,以允许字典里插入空值的类 拍照后保存图片不成功——大家请参考 @MrVokie 的方法,排查下项目里是否引入了对NSDictionary做swizzle,以允许字典里插入空值的类 Jun 12, 2017
@Jorgezz
Copy link

Jorgezz commented Aug 30, 2018

还有个原因就是保存的时候[[PHAssetCreationRequest creationRequestForAsset] addResourceWithType:PHAssetResourceTypePhoto data:data options:options];
确保数据是UIImageJPEGRepresentation生成的JPEG的数据,PNG数据系统不识别。@tanhuiya

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants