Не удается получить изображение из PHP Mysql - PullRequest
2 голосов
/ 04 мая 2019

Добрый день всем.

Я пытаюсь закодировать приложение для Android, которое должно получить из базы данных mysql db большой двоичный объект и преобразовать его в просмотр изображений на Android.

Я могу успешно загрузить изображение на веб-сервер (XAMPP), закодировать его в BLOB-объект и сохранить в таблице sql.

привет всем!

открытый класс RequestHandler {

public String sendGetRequest(String uri) {
    try {
        URL url = new URL(uri);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

        String result;

        StringBuilder sb = new StringBuilder();

        while((result = bufferedReader.readLine())!=null){
            sb.append(result);
        }

        return sb.toString();
    } catch (Exception e) {
        return null;
    }
}

здесь код для извлечения изображения:

открытый класс ViewImage расширяет AppCompatActivity, реализует View.OnClickListener {

private RequestHandler requestHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.download);

    RequestHandler rh = new RequestHandler();
    buttonGetImage.setOnClickListener(this); }
private void getImage() {
    String id = editTextId.getText().toString().trim();
    class GetImage extends AsyncTask<String,Void,Bitmap>{

        ProgressDialog loading;
        RequestHandler rh = new RequestHandler();
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(ViewImage.this, "Uok..", null,true,true);

        }

        @Override
        protected void onPostExecute(Bitmap b) {
            super.onPostExecute(b);
            loading.dismiss();
            imageView.setImageBitmap(b);
        }

        @Override
        protected Bitmap doInBackground(String... params) {

            String id = params[0];
            String add = "http://192.168.1.121:8080/getImage.php?id="+id;
            URL url = null;
            Bitmap image = null;
            try {
                url = new URL(add);
                rh.sendGetRequest(add);
                image = BitmapFactory.decodeStream(url.openConnection().getInputStream());

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return image;
        }
    }
    GetImage gi = new GetImage();
    gi.execute(id);
}

@Override
public void onClick(View v) {
    getImage();
}

}

вот скрипт php:

  if($_SERVER['REQUEST_METHOD']=='GET'){
   $id = $_GET['id'];
  $sql = "select * from image where id = '$id'";
  require_once('dbConnect.php'); 

$r = mysqli_query($con,$sql); 

$result = mysqli_fetch_array($r);

header('content-type: image/jpeg'); 

echo base64_decode($result['image']);

 mysqli_close($con);

}else{
echo "Error";
}

Есть мысли о том, что я здесь не так делаю?

Спасибо!

1 Ответ

0 голосов
/ 04 мая 2019
As we know that, Image parsing we are using Bitmap, or Base64 Ecodder.

I suggest you to use library like Glide, Picasso this is official library...
You don't have to write so much code.  
Avoid to use Boiler Plate Code in Development.

Picasso

    Picasso.get()
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)


Glide

GlideApp.with(context)
    .load("http://via.placeholder.com/300.png")
    .override(300, 200)
    .into(ivImg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...