gpt4 book ai didi

ios无法显示数据库中的图像

转载 作者:行者123 更新时间:2023-11-28 22:38:31 24 4
gpt4 key购买 nike

大家好,我正在创建一个从数据库中获取图像并将其存储在数组中的程序。但在将它们存储在数组中后,我无法显示它们。出现异常,当我用断点检查它时,它在一行中给了我异常,这是我的代码和那一行,

 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];

}

这里是断点给出异常的代码行,

UIImageView *fullScreenImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];

我现在该怎么办,请帮忙提前谢谢...

最佳答案

图像存储在数据库中的 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

首先从数据库中获取这条路径,然后使用这段代码

从网址获取图片

-(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];

关于ios无法显示数据库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15216690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com