UIImagePickerController の単純な実装を使用して写真を撮り、アプリ ディレクトリに保存しています。didFinishPickingMediaWithInfo で問題が発生しています。情報から画像を取得し、UIImageJPEGRepresentation を使用してそれを NSData に変換し、ファイルに保存します。問題は、NSData オブジェクトが決して上書きされないように見えることです。写真を撮ると写真は問題なく保存されますが、保存先のファイルパスにある画像を再表示すると、常に最初に撮った写真になるため、後続の写真は保存されません。
私は現在、NSLog ステートメントを使用して、UIImage のハッシュと、画像を保存している NSData オブジェクトのハッシュを出力しています。UIImage ハッシュは毎回変更されますが、NSData ハッシュは常にまったく同じです...それも変更すべきではありませんか?
私のコードは以下です。以下のデリゲート メソッドで宣言されていないものはすべて、問題を引き起こしていないグローバル var であることに注意してください (少なくとも問題はないようです)。
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, fileNameString];
NSData *imageData = UIImageJPEGRepresentation(image, 0.5f);
// imageData = [NSData dataWithData:UIImageJPEGRepresentation(image, 0.5f)];
[imageData writeToFile:filePath atomically:YES];
[self dismissModalViewControllerAnimated:YES];
}
NSData オブジェクトを完全に取り除き、すべてのインスタンスを置き換えると
imageData
と
UIImageJPEGRepresentation(image, 0.5f)
つまり、パラメーターとして受け取る UIImage のハッシュは常に変化しますが、 UIImageJPEGRepresentation(image, 0.5f) のハッシュは常に同じです。