-1

最後から 2 番目のようなアプリを作成する必要があります。ギャラリーが必要で、ユーザーはカメラロールではなく、そこに写真を保存できます。既に描画機能を作成していますが、画像をアプリに保存できません。私にはそれを行う方法がありません。このような質問はすべて、スタック オーバーフローで既に見ました。コアデータとテーブルビューを使用したくありません。それで、あなたがそれを行う方法を知っているなら、私を助けてください)))

4

1 に答える 1

0

データベースを使用したくない場合。次に、イメージをアプリ ドキュメント ディレクトリに保存し、必要に応じてドキュメント ディレクトリから取得するオプションがあります。

画像をドキュメント ディレクタに保存し、アプリで取得する方法をいくつか書きました。

これらは次のとおりです。 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
    {
        filePath=@"";
    }

    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

画像をドキュメント ディレクトリに保存する場所では、save メソッドを使用し、画像を取得するには getImageFrom..... メソッドを使用します。

これがあなたにもっと役立つことを願っています

于 2013-01-12T19:36:39.223 に答える