3

このコードは、画像を Documents フォルダーに保存するためのコードです。

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,        NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *savedImagePath = [documentsDirectory  stringByAppendingPathComponent:@"savedImage.png"];
    UIImage *image = imageView.image; // imageView is my image from camera
    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:savedImagePath atomically:NO]; 

これはsavedImage.pngという名前を書き続けているため、複数の画像を保存できる方法を探しています。

Google などで検索してもかまいませんが、間違ったキーワードで検索すると本当に世界が遅れてしまうので、それが何と呼ばれているかを知る必要があります :-)

乾杯

4

4 に答える 4

7

3 行目の画像ドキュメント ディレクトリ パスに追加するファイル名を変更する必要があります。毎回、まだ使用されていない別の名前を使用する必要があります。NSFileManager には、ファイルが存在するかどうかを確認するメソッドがあるため、ファイル名を作成してその場所に存在するかどうかをテストし、存在する場合は重複カウントを増やして次のファイルを試すことができます。

ifnumは、どこかで定義して保管しておく整数です。これにより、最後に使用したと思われるものを知ることができます (そして、どこかで 1 に初期化したことがわかります)。

// your code to get the directory here, as above

NSFileManager *fm = [NSFileManager ...]

do {
   savedImagePath = [documentsDirectory stringByAppendingPathComponent: 
        [NSString stringWithFormat: @"%@-%d.png", @"savedImage", num]];
   num += 1; // for next time

  if ( ![fm fileExistsAtPath: savedImagePath] )
  {
      // save your image here using savedImagePath
      exit;
  }
} while ( //some kind of test for maximum tries/time or whatever )

NSFileManager インスタンスを取得するには構文を調べる必要があり、正確なファイル存在メソッドの署名が必要ですが、それが要点です。

于 2012-05-20T05:30:47.600 に答える
5

現在のdateTimeでファイルを保存すると、同じ名前のオーバーライドの問題について心配する必要はありません

-(NSString*)getCurrentDateTimeAsNSString
{
    NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
    [format setDateFormat:@"yyyyMMddHHmmss"];
    NSDate *now = [NSDate date];
    NSString *retStr = [format stringFromDate:now];
    [format release];

    return retStr;
}
于 2012-05-20T05:43:32.417 に答える
1

そのたびに新しいファイルを作成できます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"YOURiMAGEfILE.IMAGEeXTENSION"];
NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath: path]) 
    {
        path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"YOURiMAGEfILE.IMAGEeXTENSION] ];
    }

その後、作成したファイルに対して上記の操作を実行できます。

于 2012-05-20T05:33:28.987 に答える