【问题标题】:save images to photo library, but sometimes can not work correctly将图像保存到照片库,但有时无法正常工作
【发布时间】:2011-01-02 11:04:44
【问题描述】:

我使用下面的代码将图像保存到照片库

 for(int i=0;i<[imageNameArray count];i++)
{


    NSMutableString *sss=[[NSMutableString  alloc] initWithString: myAppPath];
    [sss appendString:@"/"] ;
    [sss appendString: [NSString stringWithFormat:@"%@",[imageNameArray objectAtIndex:i]  ] ] ;
    UIImage *image = [[[UIImage alloc] initWithContentsOfFile:sss]autorelease];
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
    [sss release];

}

但有时无法正确保存图片,我发现在照片库中,有一个或多个黑块替换缩略图模式下保存的图像,但如果我点击黑块,原始图像可以正确显示。

有人遇到过同样的问题吗?

欢迎评论

谢谢

交互开发

【问题讨论】:

    标签: iphone


    【解决方案1】:

    您快速连续保存图像可能是个问题,因此保存调用重叠。 (将图像写入磁盘比从函数返回需要更长的时间)。

    据我了解,保存图像功能是异步的,并且允许注册委托/回调(在您传递 nil 的地方)。

    您可能应该等到一个图像完成写入后再开始另一个。

    您可以使用委托和回调进行设计。为了更好地为用户服务并让他们了解正在发生的事情,您可以显示进度条和其他信息,例如“已保存 1/3 图像”等。

    编辑:

    为了更好的上下文,我查阅了文档:

    UIImageWriteToSavedPhotosAlbum 函数声明如下:

    void UIImageWriteToSavedPhotosAlbum (
       UIImage  *image,
       id       completionTarget,
       SEL      completionSelector,
       void     *contextInfo
    );
    

    您应该设置completionTarget(可能是self)和completionSelector,它们应该具有以下签名:

    - (void)               image: (UIImage *) image
        didFinishSavingWithError: (NSError *) error
                     contextInfo: (void *) contextInfo;
    

    在完成选择器中,您可以执行是否需要执行另一次保存的逻辑,并更新您的“进度”UI。

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2015-12-29
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      相关资源
      最近更新 更多