将图像保存在数据库中

时间:2012-03-05 08:42:34

标签: iphone ios

在我的应用中,用户可以添加模板。在这个模板上,他添加了任意数量的图像和文字观点。 他可以选择更改文本视图属性,如字体名称,字体颜色,字体大小和还有很多。 图像操作,如将图像旋转到任何角度,在运行时增加/减小尺寸等等。完成此操作后,用户将保存此模板&看他以后想要的。 所以我想把这个所有操作都存储起来由用户&查看最近的清单。 那怎么做呢?

2 个答案:

答案 0 :(得分:1)

sqlite3 *database;
    dbName=@"dataTable.sqlite";
    NSArray *documentpath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentdir=[documentpath objectAtIndex:0];
    dbPath=[documentdir stringByAppendingPathComponent:dbName];
    sqlite3_stmt *compiledStmt;
   if(sqlite3_open([dbPath UTF8String], &database)==SQLITE_OK){
        NSLog(@"Name:%@,Company:%@,URL:%@",model.personName,model.companyName,model.imgurl);
        const char *insertSQL="insert into Persons(PersonName,CompanyName,ImgUrl,PersonImage)values(?,?,?,?)";
    if(sqlite3_prepare_v2(database,insertSQL, -1, &compiledStmt, NULL)==SQLITE_OK){
        sqlite3_bind_text(compiledStmt,1,[model.personName UTF8String],-1,SQLITE_TRANSIENT);
        sqlite3_bind_text(compiledStmt,2,[model.companyName UTF8String],-1,SQLITE_TRANSIENT);
        sqlite3_bind_text(compiledStmt,3,[model.imgurl UTF8String],-1,SQLITE_TRANSIENT);
        NSData *imageData=UIImagePNGRepresentation(imageView.image);
        sqlite3_bind_blob(compiledStmt, 4, [imageData bytes], [imageData length], NULL);
        NSLog(@"Prepare");
        sqlite3_step(compiledStmt);
    }
sqlite3_finalize(compiledStmt);

答案 1 :(得分:0)

我建议在您的数据库中保存从磁盘检索图像键 之后,使用NSArchiverNSUnarchiver从磁盘获取图片。

UIImage *img = [NSKeyedUnarchiver unarchiveObjectWithFile:db.ImgKey];

在db中保存图像很重,而且很笨重。

希望这会有所帮助。