Байт [] не декодирует в растровое изображение должным образом

Во-первых, я храню .png в базе данных mySQL. Я делаю это, сначала делая .png растровым изображением, а затем делая его Base64, используя следующий метод:

private String prepPictureForDb(Bitmap bm){
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
return Base64.encodeToString(byteArray, Base64.DEFAULT);
}

Затем я сохраняю строку Base64 в своей базе данных в столбце varchar (3000) (который, как я понимаю, может быть не лучшим способом сохранить это, но, насколько я понимаю, он все еще должен работать).

Когда я получаю эту строку из базы данных через php, я использую этот код:

<?php
//load and connect to MySQL database stuff
require("config.inc.php");
if (!empty($_POST)) {
//gets user's info based off of a username.
$query = "SELECT isAdmin, username, lastLogin, phone, email, image FROM Vamoose.user_accounts WHERE first_name = :first AND last_name = :last";
$query_params = array(':first' => $_POST['first'], ':last' => $_POST['last']);
try {
$stmt   = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
// For testing, you could use a die and message.
//die("Failed to run query: " . $ex->getMessage());
//or just use this use this one to product JSON data:
$response["success"] = 0;
$response["message"] = "Database Error. Please Try Again!";
die(json_encode($response));
}
//fetching all the rows from the query
$row = $stmt->fetch();
if ($row) {
$response["success"] = 1;
$response["isAdmin"] = $row["isAdmin"];
$response["username"] = $row["username"];
$response["lastLogin"] = $row["lastLogin"];
$response["phone"] = $row["phone"];
$response["email"] = $row["email"];
$response["image"] = base64_encode($row["image"]);
}else{
$response["success"] = 0;
}
echo json_encode($response);
}
?>

Как вы можете видеть, я делаю base64_encode($row["image"]);а потом echo json_encode($response);

Вернувшись в Android Studio, я декодирую строку, используя следующий код:

String image = json.getString("image").toString();
byte[] decodedString = Base64.decode(this.image, Base64.DEFAULT);
Bitmap bm = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

Проблема в том, что bm нулевой

ПРИМЕЧАНИЕ *: я просмотрел переполнение стека для темы на эту тему и нашел множество совпадений. Тем не менее, ни один из них не имеет отношения к моей проблеме.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы [email protected]