2012-12-11 122 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