我正在尝试将图像保存到相机胶卷。这实际上用来工作得非常好,但是我不得不处理其他事情,现在我回到项目为iOS 6更新它并且 poof 这个功能在iOS6上根本不再有用。< / p>
我尝试了两种方法,两种方法都在没有NSError对象的情况下无声地失败。首先,UIImageWriteToSavedPhotosAlbum:
UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
// Callback
-(void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
// error == nil
}
...和ALAssetsLibrary方法:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[img CGImage]
orientation:(ALAssetOrientation)[img imageOrientation]
completionBlock:^(NSURL *assetURL, NSError *error)
{
// assetURL == nil
// error == nil
}
此外,[ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized
评估为真
在模拟器上,应用程序永远不会出现在设置&gt;隐私&gt;照片部分,但在实际的iPad上,他们确实显示该应用有权访问照片。 (另外,只是补充一点:上面的第一种方法就是我之前使用过的 - 它在真实设备和模拟器上都有用,没问题)。
我也尝试在主线程上运行它,看看是否改变了什么 - 没有区别。我以前在后台运行它,它曾经工作正常(在模拟器和设备上)。
任何人都能解释一下吗?
答案 0 :(得分:0)
想出来......我做了一些愚蠢的事。 UIImage无法获取原始像素数据,您必须首先将其按照可以接受的形式进行按摩,并使用适当的元数据。
部分问题是我使用Cocos2D从CCRenderTexture(getUIImageFromBuffer())获取UIImage,当我切换到Cocos2D-x时,该功能不再可用,而我根本不知道UIImage的事实对象不能用原始像素数据构造,我认为它处理了标题信息&amp;自动格式化。
这个答案有帮助:iPhone - UIImage imageWithData returning nil
这个例子也很有帮助: http://www.wmdeveloper.com/2010/09/create-bitmap-graphics-context-on.html?m=1