0

My REST API is returning an image in the header ('Content-Type', 'image/png'). The image is stored as binary in SQL Server (data type: picture, stored in binary format). API's response is perfect as I have checked in Postman.
I want to display that image in Android. (I am using volley for Network requests.)
Any thoughts?
Thank you in advance.

EDIT1
Here is my slim REST API route that returns the image.

//get image
 $app->get('/image', function ($request, $response) {
$conn = new PDO('sqlsrv:server =localhost; Database = dbName', 'dbUser', 'dbPass');
$sql = "SELECT Picture 
        FROM Table
        WHERE Primary_Key = 'abc'";

$statement = $conn->prepare($sql);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);
return $response->withHeader('Content-Type', 'image/png')->write($row['Picture']);}



EDIT2
Here is my API get request call using volley at Android end. This code resides in a Fragment. url is a String variable, profileImage is an ImageView where I want to use that fetched image.

url= getString(R.string.api_url) + "image";
    request = new StringRequest(GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            byte[] byteArray = response.getBytes();
            Bitmap bitmap = 
            BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
            profileImage.setImageBitmap(bitmap);
        } //onErrorResponse
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    }) {
    };
    queue = Volley.newRequestQueue(getActivity());
    queue.add(request);
Rizwan Abbasi
  • 151
  • 2
  • 10

1 Answers1

0

After doing a lot of effort, I came to conclusion that this question is possible duplicate of How to download an Image by using Volley?

I replaced the value of url = "https://i.stack.imgur.com/dbujt.png"; with my API GET request and result is perfectly as desired.

Here is the code from that question thread.

ImageView mImageView;
String url = "https://i.stack.imgur.com/dbujt.png";
mImageView = (ImageView) findViewById(R.id.myImage);
...

// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
new Response.Listener<Bitmap>() {
    @Override
    public void onResponse(Bitmap bitmap) {
        mImageView.setImageBitmap(bitmap);
    }
}, 0, 0, null,
new Response.ErrorListener() {
    public void onErrorResponse(VolleyError error) {
        mImageView.setImageResource(R.drawable.image_load_error);
    }
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);

Thank you all for helping.

Rizwan Abbasi
  • 151
  • 2
  • 10