获取照片和视频文件路径并存储到 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 并存储到文件

群晖照片视频整理归档-完结篇

将视频保存到图库并获取存储到图库的视频的路径

使用 path_provider 到 video_player 获取下载的文件路径时出错

PHP性能检查用户权限并从其他服务器获取文件

将单独的 .sqlite 文件添加到 ios 项目