java - 无法从 PHP Mysql 检索图像

标签 java android mysql view blob

大家好。

我正在尝试编写一个 android 应用程序,它应该从 mysql 数据库中检索一个 blob 并将其转换为 android 上的 ImageView 。

我可以成功地将图像加载到网络服务器 (XAMPP),将其编码为 blob 并将其存储在 sql 表中。

大家好!

公共(public)类 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;
    }
}

这里是检索图像的代码:

公共(public)类 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";
}

关于我在这里做错了什么有什么想法吗?

谢谢!

最佳答案

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);

关于java - 无法从 PHP Mysql 检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55981366/

相关文章:

java - 如何获取过滤器中的请求路径变量? [微型机器人1.3.2]

android - 何时调用 MediaCodec :getOutputFormat()?

mysql - SQL 盘点库存问题

java - 为什么我得到 "java.net.MalformedURLException: Protocol not found"?

java - Maven - 与 Spark 和 HtmlUnit 的依赖冲突

java - ntdll.dll 是 Windows XP 和 Windows Vista 的标准配置吗?

java - 如果我为前一天设置,为什么我的 alarmManager 会立即启动?

android - 使用 arm-linux-gnueabi-gcc 为 Android 交叉编译静态 C hello world

mysql - mysql删除表中重复行的方法

php - 无法使用 save() 在 CakePHP 中更新(但创建新的)对象