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 名称。

我不介意在谷歌或其他地方寻找它,但我需要知道它叫什么,因为用错误的关键字查找真的会耽误世界:-)

干杯

4

4 回答 4

7

您需要在第三行更改要附加到图像文档目录路径的文件名。每次您都需要使用尚未使用的不同名称。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

如果您使用当前日期时间保存文件,则无需担心同名覆盖问题

-(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 回答
1

希望它帮助你为我工作!

if let image = info[UIImagePickerControllerOriginalImage] as? UIImage
    {
        let i = Int(arc4random())

        let str = String(i).appending(".png")

        let fileManager = FileManager.default
        let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(str)

        print(paths)

        let imageData = UIImagePNGRepresentation(image)
        fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
    }
    else{
        print("error")

    }
于 2017-04-14T20:07:03.370 回答