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