Показать изображение в Android в результате REST API Respone Header - PullRequest
0 голосов
/ 18 апреля 2020

Мой REST API возвращает изображение в заголовке («Content-Type», «image / png»). Изображение сохраняется как двоичный файл на сервере SQL (тип данных: изображение, хранится в двоичном формате). Ответ API идеален, как я проверил в Почтальоне.
Я хочу отобразить это изображение в Android. (Я использую залп для сетевых запросов.)
Есть мысли?
Заранее спасибо.

EDIT1
Вот мой тонкий REST API-маршрут, который возвращает изображение.

//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
Вот мой API запрос вызова с использованием залпа на Android end. Этот код находится во фрагменте. url - это строковая переменная, profileImage - это ImageView, где я хочу использовать это извлеченное изображение.

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

1 Ответ

0 голосов
/ 18 апреля 2020

После долгих усилий я пришел к выводу, что этот вопрос можно продублировать Как загрузить изображение с помощью залпа?

Я заменил значение url = " http://i.imgur.com/7spzG.png "; с моим запросом API GET и результат полностью соответствует желаемому.

Вот код из этой ветки вопросов.

ImageView mImageView;
String url = "http://i.imgur.com/7spzG.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);

Спасибо всем за помощь.

...