2013-01-12 65 views
-1

我需要像倒数第二个应用程序。应该有一个画廊,用户可以将图片保存在其中,而不是相机胶卷。我已经制作了绘画功能,但无法将图像保存到应用程序中。我没有任何想法如何做到这一点。我已经在堆栈溢出中看到过类似这样的问题。我不想使用核心数据和tableview。 所以,如果你知道如何做到这一点,请帮助我)))如何保存和加载应用程序中的图像?

回答

0

如果你不想使用任何数据库。然后可以选择在您的应用程序文档目录中保存图像,并在需要时从文档目录中检索它。

我已经写了一些方法将图像保存到doc director并在我的应用程序中检索它。

这些如下: 在FileHandler.h我已经宣布了这些方法来定义这些方法

#import <Foundation/Foundation.h> 


@interface FileHandler : NSObject 
{ 

} 

/* Property */ 
@property (nonatomic, retain) NSString *dirPath; 
//@property (nonatomic, retain) NSString *fileName; 

/* init method */ 

-(id)init; 


/* Other Contents */ 
-(void)createImageFilterDirectory; 

-(void)createDirectoryAtPath:(NSString*)folderPath; 

-(NSString*)getFilteredImageFilePathWithFileName:(NSString*)fileName; 

-(void)saveImageToDocDir:(UIImage*)aImage withFileName:(NSString*)file; 

-(UIImage*)getImageWithFileName:(NSString*)imageFileName; 

-(BOOL)removeImageWithFileName:(NSString*)fName; 

-(void)deleteAllDirContents; 

-(NSArray*)getAllDirContents; 

-(NSArray*)getAllImageFromDir; 

-(BOOL)deleteDir; 

@end 

和FileHandler.mi:

#import "FileHandler.h" 

#define ImageFilterDir @"ImageFilterDir" 

@implementation FileHandler 
@synthesize dirPath;//, fileName; 

/* int implementation */ 
-(id)init 
{ 
    self = [super init]; 

    if(self) { 
     //Custom Initialization 
     self.dirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
     [self createDirectoryAtPath:self.dirPath]; 

    } 

    return self; 
} 


/* Create Dir of Name ImageFilterDir */ 
-(void)createImageFilterDirectory 
{ 
    self.dirPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    [self createDirectoryAtPath:self.dirPath]; 
} 

/* Creating Director if not exists */ 
-(void)createDirectoryAtPath:(NSString *)folderPath 
{ 
    NSString *dPath = [folderPath stringByAppendingPathComponent:ImageFilterDir]; 
    NSError *error=nil; 

    if(![[NSFileManager defaultManager] fileExistsAtPath:dPath]) 
    { 
     [[NSFileManager defaultManager] createDirectoryAtPath:dPath withIntermediateDirectories:NO attributes:nil error:&error]; 
     NSLog(@"Directory %@ Created..",dPath); 

    } 
    else 
    { 
     NSLog(@"Directory Exists Already.."); 
    } 

} 


/* Get File Path with File Name */ 
-(NSString*)getFilteredImageFilePathWithFileName:(NSString *)fileName 
{ 
    NSString *documentDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    NSString *filterImageDir = [documentDir stringByAppendingPathComponent:ImageFilterDir]; 
    NSString *filePath=nil; 

    if([[NSFileManager defaultManager] fileExistsAtPath:filterImageDir]) 
    { 
     filePath = [filterImageDir stringByAppendingPathComponent:fileName]; 
    } 
    else 
    { 
     [email protected]""; 
    } 

    return filePath; 
} 


/* Save Image to Dir */ 
-(void)saveImageToDocDir:(UIImage *)aImage withFileName:(NSString *)file 
{ 
    NSString *filePath = [self getFilteredImageFilePathWithFileName:file]; 
    NSData *imageData = UIImagePNGRepresentation(aImage); 
    [imageData writeToFile:filePath atomically:YES]; 

    NSLog(@"Writing File => %@ .... ",file); 
} 


/* Get Image With File Name */ 
-(UIImage*)getImageWithFileName:(NSString *)imageFileName 
{ 
    NSString *path = [self getFilteredImageFilePathWithFileName:imageFileName]; 
    NSData *fData = [NSData dataWithContentsOfFile:path]; 

    UIImage *image = [UIImage imageWithData:fData]; 

    return image; 
} 


/* Remove Image With File Name */ 
-(BOOL)removeImageWithFileName:(NSString *)fName 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *path = [self getFilteredImageFilePathWithFileName:fName]; 
    NSError *error=nil; 
    if([fileManager fileExistsAtPath:path]) 
     return [fileManager removeItemAtPath:path error:&error]; 
    else 
     return NO; 
} 

/* Delete All Dir Contents */ 
-(void)deleteAllDirContents 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *imgFilterDir = [self.dirPath stringByAppendingPathComponent:ImageFilterDir]; 
    NSError *error=nil; 
    NSArray *arr = [fileManager contentsOfDirectoryAtPath:imgFilterDir error:&error]; 

    for (NSString *file in arr) { 
     NSString *p = [self getFilteredImageFilePathWithFileName:file]; 
     if([fileManager fileExistsAtPath:p]) 
     { 
      [fileManager removeItemAtPath:p error:&error]; 
     } 

    } 

} 

/* Get All Dir Contents. Returns an Array of Filenames */ 
-(NSArray*)getAllDirContents 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *imgFilterDir = [self.dirPath stringByAppendingPathComponent:ImageFilterDir]; 
    NSError *error=nil; 
    NSArray *arr = [fileManager contentsOfDirectoryAtPath:imgFilterDir error:&error]; 

    return arr; 
} 


/* Get All Dir Contents. Returns an Array of Image */ 
-(NSArray*)getAllImageFromDir 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *imgFilterDir = [self.dirPath stringByAppendingPathComponent:ImageFilterDir]; 
    NSError *error=nil; 
    NSArray *arr = [fileManager contentsOfDirectoryAtPath:imgFilterDir error:&error]; 

    NSMutableArray *imgArr = [[NSMutableArray alloc]init]; 

    for (NSString *file in arr) 
    { 
     NSString *p = [self getFilteredImageFilePathWithFileName:file]; 
     if([fileManager fileExistsAtPath:p]) 
     { 
      NSData *imgData = [NSData dataWithContentsOfFile:p]; 
      UIImage *image =[UIImage imageWithData:imgData]; 
      [imgArr addObject:image]; 
     } 

    } 

    return [imgArr autorelease]; 
} 


/* Delete Dir */ 
-(BOOL)deleteDir 
{ 
    [self deleteAllDirContents]; 

    NSString *f = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    f=[f stringByAppendingPathComponent:ImageFilterDir]; 
    NSError *error=nil; 
    if([[NSFileManager defaultManager] fileExistsAtPath:f]) 
    { 
     return [[NSFileManager defaultManager] removeItemAtPath:f error:&error]; 
    } 
    else 
    { 
     return NO; 
    } 

} 

-(void)dealloc 
{ 
    // [fileName release]; 
    [dirPath release]; 

    [super dealloc]; 
} 

@end 

,我想保存图像TOMY文件目录我使用保存方法和检索图像我使用getImageFrom .....方法。

我希望这会帮助你更多

+0

谢谢!它帮助了我! –

+0

欢迎.......... –

相关问题