Добрый день всем.
Я пытаюсь закодировать приложение для 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";
}
Есть мысли о том, что я здесь не так делаю?
Спасибо!