2011-07-22 75 views
2

我試圖從設備(iPhone)中獲取一些圖像並將它們顯示在屏幕上。無法從iPhone設備文件夾中獲取圖像

圖像文件保存在我的設備上,並以下面的文件夾分隔:(...)/ Documents/1/image1.png。

這裏就是我試圖讓圖像

-(UIImage *) getImageFromDevice:(NSString *) fileName 
         idImage:(int)  idImage{ 

    NSString *path; 

    path = [[self dataFilePath] stringByAppendingString:@"/"]; 
    path = [path stringByAppendingString: [[NSString alloc] initWithFormat:@"%d",idImage]]; 
    path = [path stringByAppendingString:@"/"]; 
    path = [path stringByAppendingString:fileName]; 

    NSLog(@"path = %@", path); 

    NSURL *deviceImageUrl = [[NSURL alloc] initWithString:path]; 
    NSData *imageData = [NSData dataWithContentsOfURL:deviceImageUrl]; 
    UIImage *deviceImage = [UIImage imageWithData:imageData]; 

    return deviceImage; 

} 

功能的代碼,而這是獲得路徑設備文件夾的功能工作正常:

-(NSString *)dataFilePath{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    return documentsDirectory; 

} 

但是,當我設置NSURL * deviceImageUrl[NSURL頁頭] initWithString:路徑]的deviceImageUrl變得

我在做什麼錯了?

+0

在設備或模擬器? – Sisu

+0

我試圖在模擬器上。 – jMelnik

回答

2
//NSURL *deviceImageUrl = [[NSURL alloc] initWithString:path]; 
//NSData *imageData = [NSData dataWithContentsOfURL:deviceImageUrl]; 
//UIImage *deviceImage = [UIImage imageWithData:imageData];  
UIImage *deviceImage = [[[UIImage alloc] initWithContentsOfFile:path]autorelease]; 
+0

只是「image1.png」 – jMelnik

+0

NSLog(@「path =%@」,路徑)顯示正確的道路 ? – 2011-07-22 18:21:58

+0

是的,正是我想要的路徑=/ – jMelnik

1

嘗試使用fileURLWithPath:不是URLWithString:;)

NSURL *deviceImageUrl = [NSURL fileURLWithPath:path]; // autoreleased url 

我總是搞砸了這兩種方法,太......他們讓我瘋了。

+0

[NSURL initWithPath:]:無法識別的選擇器發送到實例0x4c17ea0 – jMelnik

+0

你不應該調用initWithPath :.調用[NSURL fileURLWithPath:myPath];這是一個類方法,[在iOS中實現](http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#// apple_ref/DOC/c_ref/NSURL)。 –

+0

嗯...你的回答是正確的...我沒有寫正確的代碼...抱歉=/ – jMelnik

0

您不應該使用initWithString :,它必須符合RFC格式中描述的URL格式。如果你只是想使用系統路徑,使用這個:(不要忘記使用後釋放)

NSURL *deviceImageUrl = [[NSURL alloc] initFileURLWithPath:path isDirectory:NO]; 
相關問題