我将此代码用于将代码保存到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或其他任何地方寻找它,但我需要知道它叫什么,因为用错误的关键字查找确实延迟了世界: - )
干杯
答案 0 :(得分:7)
您需要更改要附加到第三行图像documentsDirectory路径的文件名。每次您需要使用尚未使用的其他名称时。 NSFileManager具有查看文件是否存在的方法,因此您可以构造文件名,然后测试它是否存在于该位置,如果存在,则递增重复计数并尝试下一个。
如果num
是一个整数,你在某处定义并保持不变,这样你就知道你认为你使用的最后一个(并且你已经在某处初始化为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实例并且确切的文件存在方法签名,但这就是它的要点。
答案 1 :(得分:5)
如果使用当前日期时间保存文件,则无需担心同名覆盖问题
-(NSString*)getCurrentDateTimeAsNSString
{
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyyMMddHHmmss"];
NSDate *now = [NSDate date];
NSString *retStr = [format stringFromDate:now];
[format release];
return retStr;
}
答案 2 :(得分: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] ];
}
然后您可以对创建的文件执行上述操作。
答案 3 :(得分: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")
}