Android публикует изображение и отображает ответ с помощью ImageView - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь

  1. отправить изображение на сервер.

  2. сервер обрабатывает изображение.

  3. сервер возвращает обработанное изображение.

  4. Android отображает обработанное изображениена ImageView.

Я не уверен, как получить изображение из ответа (см. код Android ниже)

Как мне решить эту проблему?

Сервер (python, flask):

@app.route("/comi", methods=['POST'])
def main():
    mi = cv2.imdecode(np.fromstring(request.files['file'].read(), np.uint8), cv2.IMREAD_COLOR )
    co = cv2.imread(random.choice(co_list))
    cominame = morph(co, mi, ld, app.static_folder)
    return send_file(cominame, mimetype='image/png')

Android:

    private void POSTImage(String miFilePath){
    final Bitmap miImage = BitmapFactory.decodeFile(miFilePath);
    RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Toast.makeText(MainActivity.this, "Volley works", Toast.LENGTH_SHORT).show();
            // ** Handle response **
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(MainActivity.this, ""+error, Toast.LENGTH_SHORT).show();
        }
    }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> param = new HashMap<>();

            String images = getStringImage(miImage);
            param.put("file", images);
            return param;
        }
    };

    requestQueue.add(stringRequest);
}

public String getStringImage(Bitmap bitmap){
    Log.i("MyHitesh",""+bitmap);
    ByteArrayOutputStream baos=new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);
    byte [] b=baos.toByteArray();
    String temp=Base64.encodeToString(b, Base64.DEFAULT);

    return temp;
}
...