我正在尝试通过位图显示图像,方法是从phpMyAdmin获取图像.但是图像没有显示


I am trying to display an image through bitmap by fetching it from phpMyAdmin. But the image is not getting displayed

我试图通过位图显示图像,方法是从MySQL获取图像,但图像没有显示。我尝试了很多,但无法得到这个东西。这是我的PHP代码:

<?php
$mysqli = new mysqli('localhost', 'root', '', 'demo');
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
    if($_SERVER['REQUEST_METHOD']=='GET'){
        $id = $_GET['id'];
        $sql = "select * from output_images where imageId='$id'";
        $r = mysqli_query($mysqli,$sql);
        $result = mysqli_fetch_array($r);
        header('content-type: image/jpeg');
        echo base64_decode($result['imageData']);
        mysqli_close($mysqli);  
    }else{
        echo "Error";
    }
?>

这是我的Android代码,它从表中获取imageData并通过位图显示。

public class TestMainActivity extends Activity implements OnClickListener {
    EditText enterId;
    Button fetchImage;
    ImageView img;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        StrictMode.enableDefaults();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_main);
        enterId = (EditText)findViewById(R.id.editText1);
        fetchImage = (Button) findViewById(R.id.button1);
        img = (ImageView)findViewById(R.id.imageView1);
        fetchImage.setOnClickListener(this);
    }
    private void getImage() {
        // TODO Auto-generated method stub
        class GetImage extends AsyncTask<String,Void,Bitmap>
        {
            protected void onPreExecute(){              
            }
            protected Bitmap doInBackground(String...params){
                String id = params[0];
                String url1 = "http://12.0.0.1/demo_d/getImage.php?imageId="+id;
                Bitmap image = null;
                try{
                    URL url = new URL(url1);
                    image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                }
                catch(Exception e){
                    Toast.makeText(getApplicationContext(), (CharSequence) e, Toast.LENGTH_LONG).show();
                }
                return image;
            }
            protected void onPostExecute(Bitmap image){
                super.onPostExecute(image);
                img.setImageBitmap(image);
            }   
}
    String id1 = enterId.getText().toString();
    GetImage i =new GetImage();
    i.execute(id1);
}
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        getImage();
    }
}

执行代码后,我没有发现任何错误,但ImageView是空白的,并且没有显示所需的图像。

看起来您在 Android 模拟器上运行此代码时正在尝试使用您的计算机,因为您使用的是 IP 127.0.0.1

如果您在模拟器上使用127.0.0.1,它基本上指向自身。

要从模拟器访问主机,您应该使用 http://10.0.2.2:8080

因此,您的网址应如下所示

String url1 = "http://10.0.2.2:8080/demo_d/getImage.php?imageId="+id;

有关此问题的更多信息,请参阅此处。