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は、特にディスクキャッシュを有効にしている場合に、使用するのに最適なキャッシュを提供しているようです。そのため、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 に答える