如何在iphone的sqlite数据库中存储图像?

编程入门 行业动态 更新时间:2024-10-25 06:31:03
本文介绍了如何在iphone的sqlite数据库中存储图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"image.sqlite"]; if (sqlite3_open_v2([path UTF8String], &database, SQLITE_OPEN_READWRITE, NULL) == SQLITE_OK) { if(selectStmt == nil) { const char *sql = "insert into imagetb(imagename,image) Values(?,?)"; if(sqlite3_prepare_v2(database, sql, -1, &selectStmt, NULL) != SQLITE_OK) // NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); NSLog(@"%s",sqlite3_errmsg(database)); } sqlite3_bind_text(selectStmt, 1, [@"test.png" UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_blob(selectStmt, 2, [data1 bytes], [data1 length], SQLITE_TRANSIENT); if(SQLITE_DONE != sqlite3_step(selectStmt)) NSLog(@"get: %s",sqlite3_errmsg(database)); else NSLog(@"scan data added"); } //showimage NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) { const char *sql = "select * from imagetb";// LIMIT 0,100 ";// where status = 1 "; sqlite3_stmt *selectstatment; if (sqlite3_prepare_v2(database, sql, -1, &selectstatment, NULL) == SQLITE_OK) { while (sqlite3_step(selectstatment) == SQLITE_ROW) { NSString *getorgstrid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstatment, 0)]; NSLog(@"id->%@",getorgstrid); [getid addObject:getorgstrid]; NSString *getorgstrname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstatment, 1)]; NSLog(@"name->%@",getorgstrname); [getname addObject:getorgstrname]; NSData *getorgstrimage = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstatment,2)length:sqlite3_column_bytes(selectstatment, 2)]; [getimage addObject:getorgstrimage]; } } sqlite3_finalize(selectstatment); } //[tblorgland reloadData]; UIImage *image1 = [UIImage imageWithData:[getimage lastObject]]; NSLog(@"image%@",image1); [getImageview setImage:image1]; [pool release]; ============================================================================== - (NSString *) getDBPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); NSString *documentsDir = [paths objectAtIndex:0]; return [documentsDir stringByAppendingPathComponent:@"image.sqlite"]; } - (void)viewDidLoad { [super viewDidLoad]; getid=[[NSMutableArray alloc]init]; getname=[[NSMutableArray alloc]init]; getimage=[[NSMutableArray alloc]init]; [self downloadimage]; [self makeDBCopyAsNeeded]; } -(void)downloadimage { NSLog(@"Downloading..."); UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"0.tqn/d/graphicssoft/1/7/g/A/5/psptubezdotcom_003.png"]]]; NSLog(@"%f,%f",image.size.width,image.size.height); NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSLog(@"%@",docDir); NSLog(@"saving png"); pngFilePath = [NSString stringWithFormat:@"%@/test.png",docDir]; data1 = [NSData dataWithData:UIImagePNGRepresentation(image)]; img=[[UIImage alloc]initWithData:data1]; [data1 writeToFile:pngFilePath atomically:YES]; NSLog(@"saving jpeg"); NSString *jpegFilePath = [NSString stringWithFormat:@"%@/test.jpeg",docDir]; NSLog(@"jpegFilePath:%@",jpegFilePath); data2 = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)]; [data2 writeToFile:jpegFilePath atomically:YES]; NSLog(@"saving image done"); [image release]; } - (void) makeDBCopyAsNeeded { BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"image.sqlite"]; success = [fileManager fileExistsAtPath:writableDBPath]; NSString *dbPath = [self getDBPath]; NSLog(@"%@",dbPath); if (success) { NSLog(@"Database Success Created"); return; } NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"image.sqlite"]; success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; if (!success) { NSLog(@"Database:->%s",sqlite3_errmsg(database)); } }

推荐答案

不建议将图像数据存储在 sqlite 中.但是如果你想存储图像数据然后使用这个链接

It is not recommended to store the image data in the sqlite. But if you want to store the image data then use this link

将图片数据保存到iphone的sqlite数据库

希望对你有帮助..

更多推荐

如何在iphone的sqlite数据库中存储图像?

本文发布于:2023-10-07 10:38:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1469162.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库中   图像   如何在   sqlite   iphone

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!