• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 下载图像编辑图像然后缓存

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:06:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

UIImageview + afnetworking 下载图片并缓存图片。

但在某些情况下,服务器图像 = 15mb。所以我需要根据一些因素对它们进行压缩并使其达到 1mb,然后需要缓存它们。

另一方面,SDWebImageCache 让您定义自己的缓存并存储它们

是否有任何内置机制用于下载、编辑然后保存到缓存中?

[SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL
                                                options:0
                                               progress:^(NSInteger receivedSize, NSInteger expectedSize)
                                               {
                                                   // progression tracking code
                                               }
                                               completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished)
                                               {
                                                   if (image && finished)
                                                   {
                                                       // do something with image
                                                   }
                                               }];

然后使用 [[SDImageCache sharedImageCache] storeImage:myImage forKey:myCacheKey]

除了做这样的事情还有其他选择吗?



Best Answer-推荐答案


您使用 SDWebImage 的场景是正确的。
出于编辑目的,您需要将委托(delegate)设置为 SDWebImageManager 对象并实现必要的方法:

// Set delegate
[SDWebImageManager sharedManager].delegate = self;

// Implement delegate method
- (UIImage *)imageManagerSDWebImageManager *)imageManager 
 transformDownloadedImageUIImage *)image 
                 withURLNSURL *)imageURL {

    UIImage scaledImage = ... // Make scale based on 'image' object
    return scaledImage;
}

请注意,此方法在图像下载后立即调用,但在将其存储到内存缓存之前以及调用完成 block 之前。
此方法的文档:

Allows to transform the image immediately after it has been downloaded and just before to cache it on disk and memory. NOTE: This method is called from a global queue in order to not to block the main thread.

之后,您将能够在您的问题中使用 SDWebImageDownloaderSDImageCache:

[SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL
                                                options:0
                                               progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                                                   // progression tracking code
                                               }
                                               completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                                                   if (image && finished) {
                                                        [[SDImageCache sharedImageCache] storeImage:image forKey:myCacheKey];
                                                   }
                                               }];

然后就可以使用SDImageCache类的方法来管理缓存了:

- (NSOperation *)queryDiskCacheForKeyNSString *)key doneSDWebImageQueryCompletedBlock)doneBlock;
- (void)removeImageForKeyNSString *)key fromDiskBOOL)fromDisk withCompletionSDWebImageNoParamsBlock)completion;

如果您需要最大数据大小的图像缩放算法,请查看 this回答。

关于ios - 下载图像编辑图像然后缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500960/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap