【问题标题】:AFGetImageOperation in OpenFlowOpenFlow 中的 AFGetImageOperation
【发布时间】:2011-05-11 20:28:29
【问题描述】:

为 OpenFlow 实现 AFGetImageOperation 的正确方法是什么。

AFGetImageOperation *getImageOperation = [[AFGetImageOperation alloc] initWithIndex:i viewController:self];
getImageOperation.imageURL = [NSURL URLWithString:aImage.imageURL];
[loadImagesOperationQueue addOperation:getImageOperation];
[getImageOperation release];

aImage.imageURL 具有请求的图像 URL,但不确定检索到的图像存储在哪里?

谢谢

【问题讨论】:

    标签: iphone objective-c nsoperationqueue


    【解决方案1】:

    图像不会被缓存。它一次又一次地获取图像。

    您可以使用以下方法缓存图像..

    -(NSString *) md5String
    {
        NSString *md5 = [Utilities md5String:[imageURL absoluteString]];
    
        return md5;
    }
    
    
    -(void) storeImage:(UIImage *)image AtPath:(NSString *)path
    {
        NSFileManager *manager = [NSFileManager defaultManager];
        if([manager fileExistsAtPath:path])
        {
            [manager removeItemAtPath:path error:nil];
        }
    
        NSData *data = UIImagePNGRepresentation(image);
        [data writeToFile:path atomically:NO];
    }
    
    
    
    //TODO: //We need to cehck the expiry date as well..
    //-(UIImage *) imageFromPath:(NSString *)path Expiry:()
    -(UIImage *) loadImageFromPath:(NSString *)path
    {
        UIImage *image = nil;
    
        NSFileManager *manager = [NSFileManager defaultManager];
        if([manager fileExistsAtPath:path])
        {
            image = [[[UIImage alloc] initWithContentsOfFile:path] autorelease];
        }
    
        return image;
    }
    
    
    -(NSString *) cachedImagePath
    {
        NSString *md5 = [self md5String];
        NSString *cachedFilePath = [[Utilities applicationCacheDirectory] stringByAppendingPathComponent:md5];
    
        return cachedFilePath;
    }
    
    - (void)main {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    
        if (imageURL) {
    
    
            UIImage *photo = nil;
    
            NSString *cachedFilePath = [self cachedImagePath];
            UIImage *image = [self loadImageFromPath:cachedFilePath];
    
            if(image)
            {
                photo = image;
            }
            else
            {
                NSData *photoData = [NSData dataWithContentsOfURL:imageURL];
                photo = [UIImage imageWithData:photoData];
                [self storeImage:photo AtPath:cachedFilePath];
           }
    
            // Create a UIImage from the imageURL.
    
            if (photo) {
                [mainViewController performSelectorOnMainThread:@selector(imageDidLoad:) 
                                                     withObject:[NSArray arrayWithObjects:photo, [NSNumber numberWithInt:photoIndex], nil] 
                                                  waitUntilDone:YES];
            }
        } else {
            // Load an image named photoIndex.jpg from our Resources.
            NSString *imageName = [[NSString alloc] initWithFormat:@"place_holder_bg.png", photoIndex];
            UIImage *theImage = [UIImage imageNamed:imageName];
            if (theImage) {
                [mainViewController performSelectorOnMainThread:@selector(imageDidLoad:) 
                                                     withObject:[NSArray arrayWithObjects:theImage, [NSNumber numberWithInt:photoIndex], nil] 
                                                  waitUntilDone:YES];
            } else
                NSLog(@"Unable to find sample image: %@", imageName);
            [imageName release];
        }
    
        [pool release];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多