获取照片和视频文件路径并存储到 sqlite
Posted
技术标签:
【中文标题】获取照片和视频文件路径并存储到 sqlite【英文标题】:Getting photo and video file path and storing into the sqlite 【发布时间】:2011-07-19 12:59:30 【问题描述】:我正在尝试将照片和视频文件路径存储到 sqlite 中。 我正在获取这样的照片,但我想知道如何获取文件路径并将其存储到 sqlite 中我也需要视频同样的事情是否可以这样做,或者是否有任何其他想法或提示来解决这个问题
-(IBAction) getPhoto:(id) sender
UIImagePickerController * UIPicker = [[UIImagePickerController alloc] init];
UIPicker.delegate = self;
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
UIPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:UIPicker animated:YES];
else
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Error" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
[alert show];
[alert release];
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
[picker dismissModalViewControllerAnimated:YES];
imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
我觉得人们会帮助我 在此先感谢
【问题讨论】:
【参考方案1】: NSData *imageData = UIImagePNGRepresentation(sample);
NSData *myImage=[[NSData alloc]initWithData:imageData];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPathToFile = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"Image%d.png",i]];
[myImage writeToFile:fullPathToFile atomically:YES];
[myImage release];
希望此代码有所帮助。 其中 i 是一个整数,可以取任何值 1,2,3.... 每次增加 i 以避免覆盖图像。现在你可以存储许多图像而不会出现任何覆盖问题。如果你想在应用程序关闭后继续存储不同的图像,你可以使用 NSUSerDefaults 来存储 i 的最后一个值。
NSString *myImage=[NSString stringWithFormat:@"Image%d",i];
之后将 i 值增加 1。然后使用 myImage 字符串将其存储在 sqlite 数据库中。希望这会有所帮助。
Link1 Link2
【讨论】:
它将照片存储在 DocumentsDirectory 中它是什么 [NSString stringWithFormat:@"Image.png"] 我没听懂。你能解释一下@"Image.png"。 只是图片文件的名称。在将其转换为格式化字符串后,我将其传递给 stringByAppendingPathComponent。我现在已经编辑了答案。如果你想要你可以忽略格式选项并直接给出@“image.png”文件名。希望你现在得到我。 这是我得到照片的地方 imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; “imageView.image”是我的 UIImageView *imageView 。我可以使用 imageView 替换 Image.png No.... image.png 是文件名。您正在命名文件 b4 将其保存到文档文件夹。它必须是一个字符串。您不能将 UIImageView 对象传递给它。 我很困惑。你能解释一下吗【参考方案2】:您需要使用 NSFileManager 将图像存储到文档目录中。在 google 或 *** 上搜索你会发现很多教程。然后你将该路径存储到sqlite中就是这样。我建议您为每个可以在 goole 或 *** 上找到代码 sn-p 的图像使用唯一标识符。
【讨论】:
【参考方案3】:检查UIImagePickerControllerDelegate中的UIImagePickerControllerReferenceURL。
这将给出文件路径。
但我建议使用 NSFileManager 将该图像存储在其他地方,并将该文件路径存储在您的 sqlite 中,因为该图像可能会被其他方式删除。
【讨论】:
【参考方案4】:NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *docDirectory = [sysPaths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", docDirectory,@"ImageName.png"];
awesomeView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10,60,60 )];
awesomeView.image =[UIImage imageWithContentsOfFile:filePath];
[mainView addSubview:awesomeView];
[awesomeView release];
您可以使用此代码从文档文件夹中检索图像并将其显示在 UIImageView 中。您可以简单地将文件名单独存储在 sqlite 中。使用它你可以用从数据库中检索到的文件名替换@“image.png”。希望这会有所帮助。
【讨论】:
我喜欢这个 NSString *fullPathToFile = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",camtitle.text]];但是什么时候才能得到这个来显示它以上是关于获取照片和视频文件路径并存储到 sqlite的主要内容,如果未能解决你的问题,请参考以下文章
Instagram API:获取所有用户媒体 API 并存储到文件