2012-12-11 76 views
0

我下载的图像使用下面的代码,但每当我尝试显示它们时什么也没有显示。我已经测试了从应用程序(模拟器)下载图像到我的桌面,所有图像都创建得很好。所以我知道他们正被保存到App的Documents目录中。iOS - 无法显示下载的图像

什么我做错了任何想法?

下载图片代码:

-(void)saveThumbnails:(NSMutableArray *)thumbnails{ 
    for(NSNumber *videoID in thumbnails){ 
     // Get an image from the URL below 
     NSURL *thumbnailURL = [self generateThumbnailURL:[videoID intValue]]; 
     UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:thumbnailURL]]; 

     NSLog(@"%f,%f",image.size.width,image.size.height); 

     // Let's save the file into Document folder. 
     // You can also change this to your desktop for testing. (e.g. /Users/kiichi/Desktop/) 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//Find Application's Document Directory 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"DownloadedThumbnails"]; 
//  NSString *dataPath = @"/Users/macminidemo/Desktop/gt";//DEBUG SAVING IMAGE BY SAVING TO DESKTOP FOLDER 

     //Check if Sub-directory exists, if not, try to create it 
     if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){ 
      NSError* error; 
      if([[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]){ 
       NSLog(@"New Folder Created!"); 
      } 
      else 
      { 
       NSLog(@"[%@] ERROR: attempting to write create new directory", [self class]); 
       NSAssert(FALSE, @"Failed to create directory maybe out of disk space?"); 
      } 
     } 
     NSArray *splitFilename = [[self generateThumbnailFilename:[videoID intValue]] componentsSeparatedByString:@"."];//Break Filename Extension Off (not always PNGs) 
     NSString *subString = [splitFilename objectAtIndex:0]; 
     NSString *formattedFilename = [NSString stringWithFormat:@"%@~ipad.png",subString]; 
     NSString *localFilePath = [dataPath stringByAppendingPathComponent:formattedFilename]; 
     NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
     [imageData writeToFile:localFilePath atomically:YES]; 
     NSLog(@"Image: %@ Saved!",formattedFilename); 
    } 
} 

显示图像代码:

if(currentVideo.thumbnail!=(id)[NSNull null] || ![currentVideo.thumbnail isEqualToString:@"missing_image.png"]){ 
    NSArray *splitFilename = [currentVideo.thumbnail componentsSeparatedByString:@"."];//Break Filename Extension Off (not always PNGs) 
    NSString *subString = [splitFilename objectAtIndex:0]; 
    NSString *formattedFilename = [NSString stringWithFormat:@"%@~ipad.png",subString]; 

    UIImage *thumbnailImage = [UIImage imageNamed:formattedFilename]; 

    NSLog(@"Image Name: %@",formattedFilename); 
    [videoThumbnail setImage:thumbnailImage]; 
    [buttonVideo addSubview:videoThumbnail]; 
}else{ 
    UIImage *thumbnailImage = [UIImage imageNamed:@"video-details-thumbnail"]; 
    [videoThumbnail setImage:thumbnailImage]; 
    [buttonVideo addSubview:videoThumbnail]; 
} 

*并有显示buttonVideo或类似的东西没有问题。我已经测试过,只是设置了一个测试图像,并且一个显示器很好(即单独运行时的“else”语句使用默认缩略图就可以很好地工作)

回答

2

imageNamed的文档说明它可以处理应用的主要捆绑。这表明它仅适用于作为应用内资源提供的图像。尝试imageWithContentsOfFile:以获取文档目录的内容。

+0

啊。天才!是的,我一直试图使用[UIImage imageWithData:]并没有意识到有一种方法来使用实际的文件。 – JimmyJammed