我正在使用 UIImagePickerController 的简单实现来拍照并将其保存到我的应用程序目录中。我遇到了 didFinishPickingMediaWithInfo 的问题,我从信息中检索图像,使用 UIImageJPEGRepresentation 将其转换为 NSData,然后将其保存到文件中。问题是,NSData 对象似乎永远不会被覆盖,所以我第一次拍照它可以很好地保存图片,但不会保存任何后续图片,因为当我重新显示位于要保存到的 filePath 的图像时,它始终是我拍摄的第一张图片。
我现在有 NSLog 语句打印出 UIImage 和我保存图像的 NSData 对象的哈希值。UIImage 哈希每次都会改变,但 NSData 哈希始终是完全相同的……那不应该也改变吗?
我的代码如下。请注意,下面委托方法中未声明的所有内容都是全局变量,不会给我带来任何麻烦(至少它们似乎没有)。
-(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)
我仍然有同样的问题,即 UIImageJPEGRepresentation(image, 0.5f) 的哈希总是相同的,即使它作为参数的 UIImage 的哈希总是改变。