【问题标题】:AFNetworking 2.0: Process data before it is cachedAFNetworking 2.0:在缓存之前处理数据
【发布时间】:2014-03-29 11:07:05
【问题描述】:

有没有办法在缓存之前更改一些数据——更具体地说:图像?

我从一个过大的 api 下载图像。我想在它们到达后立即缩小它们,以便它们需要更少的空间,并且每次从缓存加载它们时我都不必缩放它们。

我可以在AFImageResponseSerializer 的子类或STAHTTPRequestOperation 的子类中进行缩放。但无论哪种情况,图像都已以原始大小缓存。

如何在数据写入缓存之前访问和更改数据?

【问题讨论】:

    标签: ios objective-c cocoa-touch caching afnetworking


    【解决方案1】:

    回答我自己的问题:我通过在我的操作类中覆盖connection:willCacheResponse: 来实现它。

    @implementation MYImageRequestOperation
    
    -(CGSize)size
    {
        return CGSizeZero; // overwritten in subclasses
    }
    
    
    
    -(NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
    {
    
        UIImage *image = [UIImage imageWithData:cachedResponse.data];
        GPUImageLanczosResamplingFilter *resizingFilter = [[GPUImageLanczosResamplingFilter alloc] init];
    
        CGFloat scale = [UIScreen mainScreen].scale;
        CGSize size = [self size];
        [resizingFilter forceProcessingAtSizeRespectingAspectRatio: CGSizeMake(size.width * scale, size.height * scale)];
        GPUImagePicture *gpuImage = [[GPUImagePicture alloc] initWithImage:image];
        [gpuImage addTarget:resizingFilter];
        [gpuImage processImage];
    
        UIImage *smallImage = [resizingFilter imageFromCurrentlyProcessedOutput];
    
        NSData *data;
    
        if([[cachedResponse.response.MIMEType lowercaseString] isEqualToString:@"image/png"])
        {
            data = UIImagePNGRepresentation(smallImage);
        } else {
            data = UIImageJPEGRepresentation(smallImage, .9);
        }
    
        NSCachedURLResponse *response = [[NSCachedURLResponse alloc] initWithResponse:cachedResponse.response data:data];
        return response;
    }
    @end
    

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 2016-07-15
      相关资源
      最近更新 更多