пытается сохранить изображение с помощью volley.newRequestQueue и получить исключение NullPointerException - PullRequest
0 голосов
/ 02 апреля 2020

Проверял код несколько раз, и я не могу найти, где я получаю nullpointerException

E/Volley: [24062] NetworkDispatcher.processRequest: Unhandled exception java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
    at com.example.mandaditos_3.MainActivity.imageToString(MainActivity.java:158)
    at com.example.mandaditos_3.MainActivity.access$000(MainActivity.java:42)
    at com.example.mandaditos_3.MainActivity$2$3.getParams(MainActivity.java:98)
    at com.android.volley.Request.getBody(Request.java:464)
    at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:275)
    at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:249)
    at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:94)
    at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:123)
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:131)
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)

Методы для помещения изображения в imageView отлично работают

Действие кнопки:

btnSubir.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(getApplicationContext(), "error" + error.toString(), Toast.LENGTH_SHORT).show();
                }
            }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<>();
                    String imageData = imageToString(bitmap);
                    params.put("image", imageData);

                    return params;
                }
            };
            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
            requestQueue.add(stringRequest);
        }
    });

и вот метод, который я использую для сжатия и кодирования изображения imageToString ()

 private String imageToString(Bitmap bitmap){
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,100, outputStream);
    byte[] imageBytes = outputStream.toByteArray();

    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...