0

我正在使用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 似乎为我的使用提供了很好的缓存,特别是当我启用磁盘缓存时,因此我想使用它,但我不知道是否有办法在缓存之前编辑图像。

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

4

1 回答 1

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];
于 2012-12-29T16:06:21.420 回答