我在将图像路径保存到Documents文件夹时遇到了一些麻烦,并将路径存储到我的sqlite3本地数据库中。
今天我成功地将图像作为BLOB存储到数据库中,但是在互联网上阅读,人们说不建议这样做。
所以,现在我试图在DB中存储图像路径,但是......
场合
选择器代码:
-(void)imagePickerController:(UIImagePickerController *)pickr didFinishPickingMediaWithInfo:(NSDictionary *)info{
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
/* Test code for saving data */
//NSString *dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//NSString *pngPath = [NSString stringWithFormat:@"%@/test.png",dir];
//NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];
//[data writeToFile:pngPath atomically:YES];
[imageView setImage:image];
picture = YES;
[pickr dismissModalViewControllerAnimated:YES];
}
现在我有几个问题
我用Google搜索了很多答案,但经过多次试验后我放弃了。
提前致谢
答案 0 :(得分:1)
Here是关于如何在Documents目录中保存图像的很好的教程
您需要将BLOB字段转换为TEXT字段,然后只保存该图像的文件名。您还可以在Documents目录中创建文件夹,然后通过foldername / filename.png进行访问。
希望这些信息可以帮助你......
修改
以下是检查该文件夹是否退出的代码,如果不存在则创建新文件夹
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){
NSError* error;
if( [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error])
;// success
else
{
NSLog(@"[%@] ERROR: attempting to write create MyFolder directory", [self class]);
NSAssert( FALSE, @"Failed to create directory maybe out of disk space?");
}
}
答案 1 :(得分:0)
您无法直接访问用户照片库中的图像,因为您只能访问Applications Sandbox文件夹。
因此,如果您不想将图像存储为数据库中的blob文件,则应将图像保存在App文档文件夹内的caches文件夹中,然后将您设置的文件名存储到数据库中的图像中。
由于所有图像都将位于相同的路径文件夹中,因此您无需在数据库中实际保存整个路径,但只有文件名应足够。