2014-01-13 118 views
0

我已經使用以下代碼創建了名爲「Image store」的文件夾。我的要求是我想保存圖像到文件夾「圖像存儲」在api成功和圖像應保存在應用程序本身不在數據庫或相冊。我想知道我可以在應用程序中存儲圖像的機制在應用程序中存儲圖像

-(void) createFolder { 

    UIImage *image = [[UIImage alloc]init]; 

    NSError *error; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/ImageStore"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; 
    else 
    { 

    } 
} 

回答

1

ü可以做這樣的事情 U可以運行圖像的循環這樣

//at this point u can get image data 
    for(int k = 0 ; k < imageCount; k++) 
    { 
    [self savePic:[NSString stringWithFormat:@"picName%d",k] withData:imageData];//hear data for each pic u can send 
    } 


- (void)savePic:(NSString *)picName withData:(NSData *)imageData 
    { 
    if(imageData != nil) 
    { 
     NSString *path = [NSString stringWithFormat:@"/ImageStore/%@.png",pincName]; 
     NSString *Dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
     NSString *pngPath = [NSString stringWithFormat:@"%@%@",Dir,path]; //path means ur destination contain's this format -> "/foldername/picname" pickname must be unique 
    if(![[NSFileManager defaultManager] fileExistsAtPath:[pngPath stringByDeletingLastPathComponent]]) 
    { 
     NSError *error; 
     [[NSFileManager defaultManager] createDirectoryAtPath:[pngPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:&error]; 
     if(error) 
     { 
      NSLog(@"error in creating dir"); 
     } 
    } 
    [imageData writeToFile:pngPath atomically:YES]; 
    } 
} 


成功下載後保存u能獲取相似圖片下面


- (UIImage *)checkForImageIn:(NSString *)InDestination 
    { 

    NSString *Dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *pngPath = [NSString stringWithFormat:@"%@%@",Dir,InDestination];//hear "InDestination" format is like this "/yourFolderName/imagename" as i said imagename must be unique .. :) 


    UIImage *image = [UIImage imageWithContentsOfFile:pngPath]; 
    if(image) 
    { 
     return image; 
    } 
    else 
    return nil; 
} 


link to find path 看到這個鏈接找到的路徑..

aganin做相同的這運行循環如下

NSMutableArray *imagesArray = [[NSMutableArray alloc]init]; 
    for(int k = 0 ; k < imageCount; k++) 
    { 
     UIImage *image = [self checkForImageIn:[NSString stringWithFormat: @"/yourFolderName/ImageName%d",k]];//get the image 
     [imagesArray addObject:image];//store to use it somewhere .. 
    } 
+0

我有超過十個images.how我可以做到這一點嗎? – arshad

+0

看到更新的答案,評論如果你面臨任何問題 –

+0

我怎麼知道圖像是否存儲在文件夾中? – arshad

1

寫入創建目錄此代碼後

NSString *path= [documentsDirectory stringByAppendingPathComponent:@"/ImageStore"]; 
UIImage *rainyImage =[UImage imageNamed:@"rainy.jpg"]; 
NSData *Data= UIImageJPEGRepresentation(rainyImage,0.0); 
[data writeToFile:path atomically:YES] 
+0

[數據writeToFile:原子路徑:是]什麼是'路徑'在這裏?或者它應該像[數據writeToFile:datapath atomically:是] – arshad

+0

是使用數據路徑 –

1

的文件目錄中找到這樣的:

// Let's save the file into Document folder. 
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

// If you go to the folder below, you will find those pictures 
NSLog(@"%@",docDir); 

NSLog(@"saving png"); 
NSString *pngFilePath = [NSString stringWithFormat:@"%@/test.png",docDir]; 

那只是一個提供的代碼,告訴您正確的路徑是在你的IPONE設備保存的樣品。

查看下面的博客文章,它是一步一步的指導與源代碼。

Download an Image and Save it as PNG or JPEG in iPhone SDK

2
//Make a method that has url (fileName) Param 
NSArray *documentsDirectory = 
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
NSUserDomainMask, YES); 

NSString *textPath = [documentsDirectory stringByAppendingPathComponent:url]; 

NSFileManager *fileManager =[NSFileManager defaultManager]; 

if ([fileManager fileExistsAtPath:textPath]) 
{ 
    return YES; 
} 
else 
{ 
    return NO; 
} 

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage 
imageNamed:@""]];//Placeholder image 


if ([url isKindOfClass:[NSString class]]) 
{ 
    imgView.image = [UIImage imageNamed:[url absoluteString]]; 
    imgView.contentMode = UIViewContentModeScaleAspectFit; 
} 
else if ([fileManager fileExistsAtPath:url]) 
{ 


    NSString *textPath = [documentsDirectory stringByAppendingPathComponent:url]; 

    NSError *error = nil; 

    NSData *fileData = [NSData dataWithContentsOfFile:textPath options:NSDataReadingMappedIfSafe error:&error]; 

    if (error != nil) 
    { 
     DLog(@"There was an error: %@", [error description]); 
     imgView.image=nil; 
    } 
    else 
    { 
     imgView.image= [UIImage imageWithData:fileData] 
    } 
} 
else 
{ UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] 
    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 


    CGPoint center = imgView.center; 
    //   center.x = imgView.bounds.size.width/2; 

    spinner.center = center; 
    [spinner startAnimating]; 

    [imgView addSubview:spinner]; 


    dispatch_queue_t downloadQueue = dispatch_queue_create("iamge downloader", NULL); 

    dispatch_async(downloadQueue, ^{ 

     NSData *imgData = [NSData dataWithContentsOfURL:url]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 


      [spinner removeFromSuperview]; 

      UIImage *image = [UIImage imageWithData:imgData]; 


      NSError *error = nil; 

[imgData writeToFile:url options:NSDataWritingFileProtectionNone error:&error]; 

if (error != nil) 
{ 

} 
else 
{ 

} 

      imgView.image = image; 
     }); 
    }); 
} 

那的UIImageView加載圖像,如果它不列入存在於文件然後保存,活動指示器被添加到顯示圖像被加載到保存,

相關問題