将多张图像保存到相机胶卷中,只保存了几张
我试图将一些图像保存到相机胶卷,所有的图像都在一个数组中。
if (buttonIndex == 1) { int done = 0; NSMutableArray *copyOfImages = [[NSMutableArray alloc]initWithArray:saveImagesToArray]; while (!done == 1){ if (copyOfImages.count == 0) { done = 1; } if (copyOfImages.count > 0){ [copyOfImages removeLastObject]; } UIImage *image = [[UIImage alloc]init]; image = [copyOfImages lastObject]; UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); } }
因为我不知道有多less图像可以使用一个while循环
我进行了8个图像的testing,数组显示8的数量,所以这很好。
当我尝试保存图像时出现在控制台中。
-[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
在试图的8张图像中,只有5张出现在相机胶卷中。
任何帮助将是伟大的。 谢谢 :)
你为什么要调用[copyOfImages removeLastObject]
? 每当你经历那样的目光,你是在摧毁最后一个东西,因为你还没有把东西添加到这个东西上,这很奇怪。 拿出这条线,看看你看起来是否工作。
此外,而不是使用for循环,使用以下模式:
for (id object in array) { // do something with object }
这将枚举数组中的对象,当它到达结尾时停止。 只要确保在进行此操作时不要修改arrays。
我有这个相同的问题,我通过确保图像顺序保存来解决它。 我认为可能会出现某种竞赛状况。
基本上,我做了:
UIImageWriteToSavedPhotosAlbum([self.images objectAtIndex:self.currentIndex], self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
然后在image:didFinishSavingWithError:contextInfo:
我增加currentIndex
并尝试下一个图像,如果有任何离开。
到目前为止,这在所有情况下都适用于我。
我有同样的确切问题。 无论我添加到共享activityController多less图片,最多可以保存5个。
我发现问题是发送真正的UIImage而不是URL:
NSMutableArray *activityItems = [[NSMutableArray alloc] init]; for(UIImage *image in imagesArray) { [activityItems addObject:image]; } UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
为了扩大比尔的答案, UIImageWriteToSavedPhotosAlbum
似乎是在一些未知的线程上进行asynchronous写入 – 但是它也可以一次写入一些图像的隐藏限制。 如果深入挖掘,你甚至可以挑出write busy
型的错误。
在这里更多的信息:
Objective-C:UIImageWriteToSavedPhotosAlbum()+asynchronous=问题
我也同意比尔的说法,序列化你的写作是我见过的唯一合理/可靠的答案。