Строка с сервера SQL на растровый Android

Я работаю над проектом в Android, где я хочу загружать и загружать изображения в / из базы данных SQL.

Я могу отлично загрузить свои фотографии к нему. Я делаю фотографию, преобразовываю это в растровое изображение. Это растровое изображение я могу преобразовать в строку. Эта строка, которую я отправляю в веб-службу, чтобы поместить ее в базу данных SQL (этот тип имеет тип BLOB).
Я вижу в своем SQL такие вещи, как «BLOB-36,7 КБ». Поэтому я думаю, что загрузка прошла успешно.

Но когда я хочу загрузить изображение, оно идет не так.
Поскольку я отправил это как строку, я могу также получить как строку.
Строка, которую я получаю, похожа (используется Log.d): /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB

Когда я преобразовываю это со следующим кодом в растровое изображение, это идет не так.

  public Bitmap StringToBitMap(String encodedString){
try{
byte [] encodeByte= Base64.decode(encodedString, Base64.DEFAULT);
Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
return bitmap;
}catch(Exception e){
e.getMessage();
return null;
}
}

Я получаю следующую ошибку:

D/skia: --- decoder->decode returned false

Так что я думаю, что с преобразованием что-то не так.
Я не знаю что, потому что строка, которую я получаю, такая короткая, я думаю, что я не могу получить всю строку?
Я понятия не имею, как это исправить.
Это код моего веб-сервиса.

 $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect');
$number = $_POST['data'];$sql ="SELECT Image FROM images WHERE Number=".$number;
$result= mysqli_query($con, $sql);

if (mysqli_num_rows($result) > 0) {

while($row = mysqli_fetch_assoc($result)) {

$image = $row["Image"];
}
}

print($image);
}

Это код моего приложения, чтобы получить изображение.

 private void getImage() {

class GetImage extends AsyncTask<String,Void,String>{
ProgressDialog loading;
RequestHandler rh = new RequestHandler();
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(PhotoViewer.this, "Uploading...", null,true,true);
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Bitmap bitmap = StringToBitMap(s);
imageView.setImageBitmap(bitmap);
}

@Override
protected String doInBackground(String... params) {
String param = params[0];
Log.d(TAG,param);HashMap<String,String> data = new HashMap<>();
data.put("data", param);
String result = rh.sendPostRequest(DOWNLOAD_URL,data);
Log.d(TAG,result);
return result;
}
}

GetImage gi = new GetImage();
gi.execute(place.getFotoNumber());
}
public class RequestHandler{
public String sendPostRequest(String requestURL,HashMap<String, String> postDataParams) {

URL url;
String response = "";
try {
url = new URL(requestURL);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));

writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();

if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
response = br.readLine();
} else {
response = "Error Registering";
}
} catch (Exception e) {
e.printStackTrace();
}

return response;
}

}

Я надеюсь, что вы, ребята, можете мне помочь.

Спасибо,
StijnB

1

Решение

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

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector