Как сохранить изображение в базу данных SQLite в Android?

В MySQL Database у меня есть таблица, содержащая name and image, Я хочу, чтобы получить эти детали в Android.

я использовал PHP чтобы получить данные от Database,

мой PHP code:

<?php
$db_host = $_POST['db_host'];
$db_uname = $_POST['db_user_name'];
$db_password = $_POST['db_password'];
$conn = mysql_connect($db_host, $db_uname, $db_password);
$query = $_POST['query'];
$db_name = $_POST['db_name'];
mysql_select_db($db_name);
$result_set = mysql_query($query, $conn);
while($row = mysql_fetch_array($result_set)) {
print "name:{$row['name']},image:" . base64_decode($row['image']) . ";
}
mysql_close($conn);

?>

я получил name отлично как есть и image в нижнем формате

LzlqLzRBQVFTa1pKUmdBQkFnRUFZQUJnQUFELzdnQU9RV1J2WW1VQVpBQUFBQUFCLytFVFhVVjRhV1lBQUUxTkFDb0FBQUFJQUFjQk1nQUNBQUFBRkFBQUFHSUJPd0FDQUFBQUJ3QUFBSFpIUmdBREFBQUFBUUFFQUFCSFNRQURBQUFBQVFBL0FBQ2NuUU

Формат, показанный выше, только в качестве примера.

Строка, которую я получаю как изображение, сохраняется в SQLite Database с помощью ContentValues,

И теперь мне нужно отобразить image сохранено в SQLite на экране андроида.

Мой код похож на:

 ByteArrayInputStream input_stream = new ByteArrayInputStream(moviesList.get(i).getMovieImage());
Bitmap bitmap = BitmapFactory.decodeStream(input_stream);
movie_image.setImageBitmap(bitmap);

Но я не могу получить изображение?

Пожалуйста, помогите мне решить эту проблему. Благодарю вас

2

Решение

И что по этому поводу?

byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
0

Другие решения

ОБНОВИТЬ

Я не занимаюсь разработкой под Android, но в части PHP:

<?php
// config.php

$db_host ='';
$db_uname = '';
$db_password = '';
$db_name = '';
$api_key = 'HERE_WE_DEFINE_A_SECRET_KEY';

?>

<?php
// file you're calling
require_once 'path/to/config.php';

$conn = mysql_connect($db_host, $db_uname, $db_password);

# check if your receiving a post call
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if($_POST['api_key'] !== $api_key)
{
echo 'No access';
exit(1);
}

switch($_POST['command'])
{
// this is how you call a certain action
case 'GET_IMAGE':
// Do the stuff you want to do.
require_once 'path/to/getImage.php';
break;
default:
// If no command is specified
break;
}
}
?>

<?php
// getImage.php
if(!$conn)
{
echo 'No connection';
exit(1);
}
// sanitize input
if(!isset($_GET['id']) || !is_numeric($_GET['id']))
{
echo 'Invalid ID';
exit(1);
}
$image_id = $_GET['id'];
$query="SELECT * FROM images WHERE id = {$image_id}";

$result_set = mysql_query($query, $conn);
while($row = mysql_fetch_array($result_set))
{
echo "name:{$row['name']},image:" . base64_decode($row['image']) ;
}
?>

Теперь, если мы называем URL, мы в бизнесе — и мы в безопасности!

yourhost.com/yourfile.php?api_key=HERE_WE_DEFINE_A_SECRET_KEY&Команда = GET_IMAGE&ID = 3


ОРИГИНАЛЬНАЯ ПОЧТА
Ну, в приведенном выше примере PHP у вас есть ошибка разбора.

print "name:{$row['name']},image:" . base64_decode($row['image']) . ";

Требуется дополнительная «перед точкой с запятой.

print "name:{$row['name']},image:" . base64_decode($row['image']) . "";

PS: кто-то упомянул, что отправлять учетные данные MYSQL через HTTP небезопасно? Еще больше, чтобы _POST завершить ЗАПРОСЫ?

1.) Если вы создаете приложение и кто-то использует программу типа WIRESHARK, у вас большие проблемы.

2.) Ты просто не должен этого делать. Лучше установить все учетные данные локально, подготовить ЗАПРОСЫ и использовать секретную фразу-пароль (в основном это и есть ключ API) или что-то еще, чтобы получить ваши данные.

0

Я бы порекомендовал вам сохранить файл на диске, создать файл Uri и сохранить Uri вместо данных изображения в базе данных.

Если вам все еще нужно сохранить данные изображения, взгляните на этот ответ:
https://stackoverflow.com/a/32646725/383676

0