2

NSDocumenDirectory我的储蓄有奇怪的问题。这是一个预览:首先我选择图像(在我的imagePickerViewController):

在此处输入图像描述

在我的PreviewController

在此处输入图像描述

所以第一次尝试,没问题。

然后我重新访问imagePickerViewController添加另一个图像:

在此处输入图像描述

在我的PreviewController

在此处输入图像描述

这就是问题发生的地方。在上图中,它从旧预览中重新复制了最后一张图像(如副本)。我不知道我在我的代码中做错了什么。但是当文件存在时我会保存它。请看:

for (int i = 0; i < info.count; i++) {
    NSLog(@"%@", [info objectAtIndex:i]);
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,    NSUserDomainMask ,YES );
    NSString *documentsDir = [paths objectAtIndex:0];
    NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"firstSlotImages%d.png", i]];
        if ([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]) {

            NSLog(@"file doesnt exist");

        } else {
            ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation];
            UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]];
            //----resize the images
            image = [self imageByScalingAndCroppingForSize:image toSize:CGSizeMake(256,256*image.size.height/image.size.width)];

            NSData *imageData = UIImagePNGRepresentation(image);
            [imageData writeToFile:savedImagePath atomically:YES];

            NSLog(@"saving at:%@",savedImagePath);
        }
}

我需要的是用新的图像重新添加相同的图像。和上次预览一样。

4

1 回答 1

1

这四张图像按它们在预览中显示的顺序传递,因此在第一个示例中,橙色猫排在第三位,在第二个示例中,橙色猫排在第四位。新图像没有保存,因为它是第三个,并且您已经有一个名为“firstSlotImages2.png”的文件。如果您在不检查文件是否存在的情况下重新保存每个图像,您应该得到您正在寻找的结果。

媒体信息中有一个键: UIImagePickerControllerMediaURL它返回一个 NSURL,将其转换为字符串并获取lastPathComponent. 使用它作为文件名保存到您要保存的目录。然后,您可以通过将相同的文件名保存在 NSMutableArray 或 NSMutableDictionary 中来保存对这些图像的引用

于 2012-07-10T19:28:19.603 回答