ios无法显示数据库中的图像
嘿,伙计们,我正在创建一个程序,从数据库中获取图像并将其存储在数组中。但在数组中存储它们之后,我无法显示它们。引发了一个异常,当我用断点检查它时,它在一行给了我异常,这是我的代码和那行代码ios无法显示数据库中的图像,ios,arrays,sqlite,Ios,Arrays,Sqlite,嘿,伙计们,我正在创建一个程序,从数据库中获取图像并将其存储在数组中。但在数组中存储它们之后,我无法显示它们。引发了一个异常,当我用断点检查它时,它在一行给了我异常,这是我的代码和那行代码 data=[MyDatabase new]; slideImages=[data OpenMyDatabase:@"SELECT pic_name FROM exterior":@"pic_name"]; [self putImageViewsInScrollView:slideImages
data=[MyDatabase new];
slideImages=[data OpenMyDatabase:@"SELECT pic_name FROM exterior":@"pic_name"];
[self putImageViewsInScrollView:slideImages.count];
self.FullScreenImageScroller.delegate=self;
}
-(void) putImageViewsInScrollView:(int)numberOfImageViews
{
for(int i=0 ;i< numberOfImageViews; i++)
{
UIImageView *fullScreenImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];
fullScreenImageView.frame = CGRectMake((WIDTH_OF_IMAGE * i) , 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);
fullScreenImageView.image= [UIImage imageNamed:[slideImages objectAtIndex:i]];
[self.FullScreenImageScroller addSubview:fullScreenImageView];
}
[self.FullScreenImageScroller setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([slideImages count]), HEIGHT_OF_IMAGE)];
[self.FullScreenImageScroller setContentOffset:CGPointMake(0, 0)];
[self.FullScreenImageScroller scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO];
}
我现在该怎么办,请提前帮助n感谢…图像存储在NSData中的数据库中,而不是UIImage,因此您将NSData放入数据库中,从数据库中获取NSData,并从该NSData中获取图像……将图像存储在数据库中不是一个好的概念……将图像保存在文档文件夹中并在数据库中保存图像的路径…并从该路径获取图像以显示 若您将NSData存储在数据库中,那个么通过
UIImage *image = [UIImage imageWithData:(NSData *)];
否则,如果要在文档文件夹中保存此图像,请使用此代码
在应用程序中保存图像
-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
if ([[extension lowercaseString] isEqualToString:@"png"]) {
[UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
} else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
[UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
} else {
ALog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
}
}
and save this image path in database
首先从数据库中选择此路径,然后使用此代码
从URL获取图像
-(UIImage *) getImageFromURL:(NSString *)fileURL {
UIImage * result;
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
result = [UIImage imageWithData:data];
return result;
}
将图像插入SQLite:
sqlite3_bind_blob(compiledStatement,i, [image_data bytes], [image_data length], SQLITE_TRANSIENT);
并从SQLite获取图像:
NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, i) length: sqlite3_column_bytes(compiledStatement, i)];
UIImage *img = [UIImage imageWithData:dataForCachedImage];
我认为您没有保留
幻灯片图像
。如果要填充正确的UIImage对象,请保留数组slidemages
我假设您将NSData类型存储在slidemages中。
在这种情况下,您应该使用
[UIImage imageWithData:(NSData*)]
初始化图像对象。有什么异常?Home[1059:c07]-[FMResultSet length]:发送到实例0xAA9AA90的无法识别的选择器NSData如何存储在数据库中?因为我只想访问数据库中的图像你修改你的代码以获得你的图片的数据…你知道如何根据你的要求修改你的代码。。。
NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, i) length: sqlite3_column_bytes(compiledStatement, i)];
UIImage *img = [UIImage imageWithData:dataForCachedImage];