【问题标题】:Using SDWebImage and saving image to public gallery使用 SDWebImage 并将图像保存到公共画廊
【发布时间】:2016-04-24 08:35:20
【问题描述】:

我正在为我的 iOS 项目使用 SDWebImage。 SDWebImage 具有强大的功能,可以在基于 URL 提取图片时将图片缓存在内存中以及磁盘中。但是,我们是否也可以让图片(由 SDWebImage 缓存)在图片库中可用?这允许用户查看他们使用照片库下载的图片,还允许其他应用程序也可以使用这些图片。

【问题讨论】:

    标签: ios objective-c sdwebimage


    【解决方案1】:

    您可以在 SDWebImage 将图像加载到您的 UIImageView 后获取图像,如下所示:

    [self.imageView sd_setImageWithURL:url
        placeholderImage:placeholder 
        options:options
        progress:nil
        completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
            if (image) {
                // save to photo album here
            }
        }
    ];
    

    我使用这个库将照片保存到自定义相册:

    https://github.com/Kjuly/ALAssetsLibrary-CustomPhotoAlbum

    这里是使用这个库的示例代码:

    ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
    [assetsLibrary saveImage:image toAlbum:@"YOUR_ALBUM_NAME" completion:nil failure:nil];
    

    更新:您也可以使用 ALAssetsLibrary 从相册中加载图像。这是一个例子:

    ALAssetsLibrary* assetsLibrary = [[ALAssetsLibrary alloc] init];
    [assetsLibrary loadImagesFromAlbum:^(NSMutableArray *images, NSError *error) {
        if (images) {
            // ...
        }
    }];
    

    【讨论】:

    • 谢谢马克。使用 ALAssetsLibrary 将照片存储到自定义相册后,您是否更新了对 SDWebImage 的访问以指向您的自定义相册?由于该照片现在在本地可用。我相信 SDWebImage 有一个缓存在磁盘中的到期日期(我可能错了)。
    • 真的取决于你的用例。如果您要删除 URL 上的图像,那么这可能是有道理的,但如果其他人仍然需要访问它,我不会打扰。
    • 可能会使您的代码过于复杂而没有太多好处。
    • 是的,我明白。就我而言,我想这样做有几个原因。首先是防止使用双倍的磁盘使用量,此时图像已经缓存在磁盘中,同时也本地存储在相册中。除此之外,磁盘缓存有一个由 SDWebImage 处理的过期时间,因此在过期后,SDWebImage 会重新获取图像,尽管它已经存储在手机本地。在用户已经在本地存储了大量图像之后,这不会为用户优化。随着用户下载更多图片,应用网络使用量会随着时间的推移而增加。
    • 有道理。我主要将其用于社交网络类型的应用程序,用户可以在其中看到照片的提要,并且他们能够将照片保存到他们的设备中。几天后,他们不再在他们的提要中看到这些相同的照片,因为他们看到了更新的图像。因此,在我的情况下,从设备加载将是矫枉过正。如果用户一遍又一遍地查看相同的照片,那么按照您的建议去做会更有意义。您需要先检查它是否存在于库中,以及它是否没有从 URL 加载。
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多