изображение магазина iphone в приложении, которое выбрано из галереи - PullRequest
1 голос
/ 10 марта 2011

Я много искал в Google, но не смог получить требуемый ответ. Я выбираю фотографии из галереи изображений и хочу сохранить их в своем приложении. Если мне нужно сохранить его в базе данных (как BLOB), я должен ввести имя файла (которое я не получаю, поскольку выбрал из галереи). Могу ли я хранить его где-нибудь еще? пожалуйста помоги. Я застрял в этом в течение длительного времени. Мне нужно извлечь изображение и показать его в виде выноски карты.

Я использую приведенный ниже код, чтобы выбрать фотографию из галереи и вставить в базу данных

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

Приведенный ниже код, исключающий SQL-оператор, упомянутый выше

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

приведенный ниже код для извлечения из базы данных

* * 1010

приведенный ниже код для отображения изображения в выноске

UIImageView *mapImg = [[UIImageView alloc] initWithImage [UIImageimageWithData:imgData]];
pinView.leftCalloutAccessoryView = mapImg;

Ответы [ 3 ]

2 голосов
/ 10 марта 2011

Преобразуйте изображение, полученное для фотогалереи, в NSData, а затем сохраните его в базе данных в виде BLOB-объекта. Таким образом, вы можете легко извлекать nsdata из базы данных, когда вам когда-либо понадобится.Я показываю изображение из фотогалереи.

Всего наилучшего.

0 голосов
/ 23 декабря 2011

В моем случае я искал много в Google, а затем наконец нашел решение, которое ниже кодирует его работу для меня, я надеюсь, что это работа для вас

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{


NSLog(@"info: %@",info);

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirec = [paths objectAtIndex:0];
NSString *imgePath = [documentsDirec stringByAppendingPathComponent:@"note.sqlite"];

if(sqlite3_open([imgePath UTF8String], &database) == SQLITE_OK){

    const char *sql = "insert into images (images) values (?)";
    if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) == SQLITE_OK){
        UIImage *edtedImae = [info objectForKey:UIImagePickerControllerOriginalImage];
        NSData *dataForImage = UIImagePNGRepresentation(edtedImae);
        sqlite3_bind_blob(addStmt, 1, [dataForImage bytes], [dataForImage length], SQLITE_TRANSIENT);
    }
    if(sqlite3_step(addStmt) != SQLITE_DONE){

        NSLog(@"error %s",sqlite3_errmsg(database));
    }
    else {
        NSLog(@"Insert row Id = %d",sqlite3_last_insert_rowid(database));
    }
    sqlite3_finalize(addStmt);

    }
   sqlite3_close(database);               
   [picker dismissModalViewControllerAnimated:YES];
}

спасибо

0 голосов
/ 10 марта 2011

Вы можете использовать это для получения пути к каталогу, доступному для записи вашим приложением:

NSString *directory = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

Существуют различные способы доступа к этому каталогу, включая методы writeToFile: NSData, класс NSFileManager, NSFileHandleкласс и даже функции C stdio.

...