我在google搜索了很多,但无法获得所需的答案。我正在从图片库中选择照片,并且希望将其存储在我的应用程序中。如果我必须将它存储在数据库中(作为BLOB),那么我必须输入文件的名称(我没有从画廊中选择该文件)。我可以将它存储在其他地方吗?请帮忙。我从很长一段时间里陷入了这个困境。我需要提取图像并在地图标注视图中显示它。从商店中选择的应用程序中的iphone商店图像
我使用下面的代码,从图库中选择照片并插入到数据库
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)dictionary {
[picker dismissModalViewControllerAnimated:YES];
tempImg.image = image;
NSData *imgData = UIImagePNGRepresentation(tempImg.image);
NSLog(@"the img data %@",imgData);
sql = [NSString stringWithFormat:@"update latlng set image = '%@' where placeName = '%@'",imgData,pName.text];
下面的代码excuting上述
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
const char *sqlStatement;
sqlStatement = [sql UTF8String];;
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
if (sqlite3_step(compiledStatement))
{
NSLog(@"YES");
}
}
else
{
printf("could not prepare statemnt: %s\n", sqlite3_errmsg(database));
}
sqlite3_finalize(compiledStatement);
}sqlite3_close(database);
下面的代码从数据库中提取提到的SQL语句
NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 5) length:sqlite3_column_bytes(compiledStatement, 5)];
以下代码在标注中显示图像
UIImageView *mapImg = [[UIImageView alloc] initWithImage [UIImageimageWithData:imgData]];
pinView.leftCalloutAccessoryView = mapImg;
感谢您的回答。我现在尝试了以上。但是,转换到nsdata时,应用程序崩溃。我在那里放了一个nslog并试了一下。它显示图像被加密但它不停止。然后崩溃。 plz帮助。 – Droidme 2011-03-10 05:25:24
你可以发布你的代码和崩溃日志吗? – Warrior 2011-03-10 05:27:15
上述代码适用于少数图片。但少数它是剂量。这是否由于尺寸?我编辑了我的问题的代码 – Droidme 2011-03-10 05:34:21