2011-11-17 1 views
0

iPhone에 이미지를 저장하고로드하기위한 몇 가지 해결책이 있다는 것을 알고 있습니다. 그러나 아무도 나를 위해 꽤 일한 적이 없다.iPhone 고유 키로 여러 UII 이미지로드 및 저장 하시겠습니까?

예를 들어, 아래의 링크는 고유 한 키로 UIImage를로드하고 저장할 수있는 훌륭한 코드 조각을 가지고 있지만이 코드를 사용하여 이미지를로드하는 방법을 알 수는 없습니다. 키가 이미 있습니다.

//saving an image 
- (void)saveImage:(UIImage*)image:(NSString*)imageName { 
    NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format. 
    NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it 
    NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]]; //add our image to the path 
    [fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image) 
    NSLog(@"image saved"); 
} 

//removing an image 
- (void)removeImage:(NSString*)fileName { 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", fileName]]; 
    [fileManager removeItemAtPath: fullPath error:NULL]; 
    NSLog(@"image removed"); 
} 

//loading an image 
- (UIImage*)loadImage:(NSString*)imageName { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]]; 
    return [UIImage imageWithContentsOfFile:fullPath]; 
} 

당신이 날이 정말 감사하겠습니다 그를 해결하는 데 도움 수 있다면

http://www.friendlydeveloper.com/2010/02/using-nsfilemanager-to-save-an-image-to-or-loadremove-an-image-from-documents-directory-coding/

. 여러 이미지를 저장하고 주어진 키가 이미 존재하는지 여부에 따라 이미지를로드해야합니다.

답변

2

고유 키가있는 이미지를 가져 오려면 UUID를 사용해보십시오. 여기에 독특한 key..For 예와이 항상 u를 줄 것이다 이미지는 내가 바로 질문을받을 경우

- (NSString *)pathForImageFileWithPrefix:(NSString *)Prefix 
{ 
    CFUUIDRef uuid; 
    CFStringRef uuidStr; 
    uuid = CFUUIDCreate(NULL); 
    uuidStr = CFUUIDCreateString(NULL, uuid); 
    NSData *imageData = UIImageJPEGRepresentation(chosenImage, 1.0); 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    result = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@.png",Prefix, uuidStr]]; 
    [imageData writeToFile:result atomically:NO]; 
    CFRelease(uuidStr); 
    CFRelease(uuid); 
    return result; 
} 
0

, 당신은 주어진 이미지 이름의 파일이 이미 존재하는지 여부를 알고 싶어 .. UUID를 사용하는 예입니다 ? 그럼 그냥 내 원래의 게시물에 loadImage 방법으로이 작업을 수행 한

bool fileExists = [NSFileManager defaultManager] fileExistsAtPath:filePath];

+0

사용할 수 있습니다. 그래서 나는 저장된 이미지의 파일 경로와 코드의 라인을 가지고 if 문을 가지고 있으므로'fileExists'는 저장된 이미지를 반환 할 것이고 그렇지 않으면 nil을 반환 할 것입니다. 그러나 bool은 항상 거짓이라는 의미입니다. 나는 항상 무익한 결과를 얻고 있습니다. loadImage 메서드를 적용하여 이미지가 있는지 확인하는 방법에 대한 아이디어가 있습니까? –

+0

파일 경로는 어떻게 생겼습니까? 전체 디렉토리 경로, 파일 이름 및 파일 확장자를 포함하여 그것이 올바른 것인지 확신합니까? – TheEye

+0

내가 NSLogged 하고이있어 :'/ var/모바일/응용 프로그램/42C18ABE - 18B2 - 41C5-9389 - BC5C15BD8BD4/문서/imgSaved.png' 아니, 맞지? 이미지 이름이 imgSaved.png 일 경우 –

관련 문제