美文网首页iOS个人修养iOS开发工具
批量保存图片到相册的丢失图片的解决方法

批量保存图片到相册的丢失图片的解决方法

作者: CGPointZero | 来源:发表于2015-11-23 14:05 被阅读142次

    在循环语句中批量保存图片到相册时,会有部分图片丢失,代码一般是这样的:

    <code>
    for(UIImage *image in imageArray)
    {
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
    }
    </code>
    由于iOS 往系统相册写照片的时候是单线程,一张存完才会存下一张,可能是因为要经过这几个过程:压缩图片、生成缩略图、SQLite保存数据,同时写入照片会有失败的情况。

    解决方法是:

    //保存小图至相册
    <code>
    -(void)saveSmallImages
    {
    self.index=0;
    UIImage *image=self.imageArray[self.index];
    UIImageWriteToSavedPhotosAlbum(image,self,@selector(image:didFinishSavingWithError:contextInfo:),nil);
    }
    </code>
    //递归调用保存图片
    <code>
    -(void)image: (UIImage *) image
    didFinishSavingWithError: (NSError *) error
    contextInfo: (void *) contextInfo;
    {
    [self saveNext];
    }
    </code>
    //保存下一张
    <code>
    -(void) saveNext

    {

    self.index++;

    if (self.index<self.imageArray.count)

    {
    UIImage *image=self.listToSave[self.index];

    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    }

    }

    </code>

    需要注意的是:

    在保存完成的时候,调用的方法必须是:

    <pre><code>-(void)image: (UIImage *) image

    didFinishSavingWithError: (NSError *) error

    contextInfo: (void *) contextInfo;</code></pre>

    不然就会导致崩溃。

    相关文章

      网友评论

      本文标题:批量保存图片到相册的丢失图片的解决方法

      本文链接:https://www.haomeiwen.com/subject/thjrhttx.html