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

4 つの画像は、プレビューに表示される順序で渡されるため、最初の例ではオレンジ色の猫が 3 番目、2 番目の例ではオレンジ色の猫が 4 番目になります。新しい画像は 3 番目であるため保存されません。既に「firstSlotImages2.png」という名前のファイルがあります。ファイルが存在するかどうかを確認せずに各画像を再保存すると、探している結果が得られるはずです。

メディア情報にはキーがあり ます。UIImagePickerControllerMediaURLこれは NSURL を返し、それを文字列に変換して、lastPathComponent. これをファイル名として使用して、保存先のディレクトリに保存します。この同じファイル名を NSMutableArray または NSMutableDictionary に保存することで、これらの画像への参照を保存できます。

于 2012-07-10T19:28:19.603 に答える