UIImageWriteToSavedPhotosAlbum有时只能工作。有时它起作用,有时它不起作用,完全相同的功能。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }
我正在使用UIImagePicker控制器来获取然后调用该函数的图像。
有时会将其保存到相机胶卷上,有时则根本不会。
任何人都有任何想法?
提前致谢。
编辑:
UIImageWriteToSavedPhotosAlbum的完成方法有时返回错误:
wait_fences: failed to receive reply: 10004003
答案 0 :(得分:17)
希望这个答案为时已晚,无法提供帮助。我遇到了完全相同的问题。事实证明这个问题是双重的。首先,在将图像发送到UIImageWriteToSavedPhotosAlbum之前,需要保留图像。其次,在iPhone4之前的设备上,这个功能可以花费很多时间来完成它的工作。我发现的修复是实现回调函数。有关此信息,请参阅UIImageWriteToSavedPhotosAlbum的文档。该函数必须采用正确的格式,不能只使用任何旧函数。在此功能中,请确保释放您保留的图像,否则将泄漏内存。您还可以使用它来跟踪保存图像的时间。以下是我的基本代码:
-(void)processImage:(UIImage *)image {
[image retain];
UIImageWriteToSavedPhotosAlbum(reconstructedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}
- (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
NSLog(@"SAVE IMAGE COMPLETE");
if(error != nil) {
NSLog(@"ERROR SAVING:%@",[error localizedDescription]);
}
[image autorelease];
}
答案 1 :(得分:0)
首先,我将向完成目标方法添加一个完成目标方法,以查看它是否产生任何错误。有关详细信息,请参阅UIImageWriteToSavedPhotosAlbum
文档。
编辑:
有一次它回来了...... wait_fences:未收到回复: 10004003
这意味着操作超时。原因很多:
didReceiveMemoryWarning
中登录,看看是否是原因。我认为(1)最有可能并解释间歇性。当你有足够的内存时,该方法可以工作,当你没有时,它就会失败。
此外,编译时,请解决出现的任何警告。这些只是在运行时才会显示的错误。你的问题可能会列在那里