使用AFNetworking在缓存之前编辑图像

时间:2012-12-29 15:53:21

标签: objective-c ios afnetworking

我正在使用AFNetworking加载一堆图像,我想在AFNetworking缓存它们之前缩放并应用圆角到这些图像。

我开始缩放并在每次加载时对图像应用圆角但是当从缓存加载图像时也会调用完成块,因此当用户滚动填充的集合视图时,这会占用太多资源与图像。

[self.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:url
                                                        cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                                    timeoutInterval:10.0f]
placeholderImage:kVideoCollectionViewCellVideoImagePlaceholder
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    /**
     * The image is edited here and this block is called
     * when the image is loaded from web and from the cache.
     */
    [self.imageView setImage:image];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    DDLogError(@"%@", error);
}];

AFNetworking似乎为我的使用提供了很好的缓存,特别是当我启用磁盘缓存时,因此我想使用它,但我无法弄清楚是否有一种方法可以在缓存之前编辑图像。

有谁知道这是否可能,如果可行,怎么做?

1 个答案:

答案 0 :(得分:0)

在发布问题之后,我发现我可能在使用UIImageView + AFNetworking类别的另一个方向上看了。使用AFImageRequestOperation直接解决了问题。

__weak NZVideoCollectionViewCell *weakSelf = self;
NSURLRequest *request = [NSURLRequest requestWithURL:url
                                         cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                     timeoutInterval:10.0f];
AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:^UIImage*(UIImage *image) {
    /**
     *  Edit image.
     */
    return editedImage;
}
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    [weakSelf.imageView setImage:image];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    DDLogError(@"%@", error);
}];
[operation start];