【问题标题】:i am trying to upload images on server using android volley (in the form of strings)我正在尝试使用 android volley(以字符串的形式)在服务器上上传图像
【发布时间】:2016-07-31 09:24:00
【问题描述】:

图像质量很差,大小约为 25-35 kbs。 如何提高它的质量。

是因为我将图像作为字符串发送吗? 转换为图像的字符串可以具有高质量吗?

我想发送完整质量的图像,我该怎么做?

public String getStringImage(Bitmap bmp){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] imageBytes = baos.toByteArray();
        String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
        return encodedImage;
    }

    private void  uploadImage(){
        //Showing the progress dialog
        final ProgressDialog loading = ProgressDialog.show(this, "Uploading...", "Please wait...", false, false);
        StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String s) {
                        //Disimissing the progress dialog
                        loading.dismiss();
                        //Showing toast message of the response
                        Toast.makeText(MainActivity.this, "uploaded" , Toast.LENGTH_LONG).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        //Dismissing the progress dialog
                        loading.dismiss();

                        //Showing toast
                        Toast.makeText(MainActivity.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
                    }
                }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                //Converting Bitmap to String
                String image = getStringImage(bitmap);

                //Getting Image Name
                String name = editTextName.getText().toString().trim();

                //Creating parameters
                Map<String,String> params = new Hashtable<String, String>();

                //Adding parameters
                params.put(KEY_IMAGE, image);
                params.put(KEY_NAME, "name");

                //returning parameters
                return params;
            }
        };

        //Creating a Request Queue
        RequestQueue requestQueue = Volley.newRequestQueue(this);

        //Adding request to the queue
        requestQueue.add(stringRequest);
    }

【问题讨论】:

  • quality of images is very bad and size is around 25-35 kbs。那你为什么要发送这样的图像?如果图像质量不好,它就会一直很差。
  • 我通过在我的 nexus 5 中单击来发送图像 -_-
  • 你真是个魔术师!
  • 大小和质量 - 在数据库方面:/

标签: android android-studio android-volley image-uploading


【解决方案1】:

不要从数据中获取该图像,它始终是低质量的图像。尝试使用文件路径并从文件路径中获取图像。

打开相机

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(path));
startActivityForResult(intent, CAMERA_PIC_REQUEST);    

当您返回 onActivityResult 时,图像将存储到您定义的路径中。您可以从那里获得高分辨率图像。或者你也可以使用一个函数来获取最后捕获的图​​像

private String getLastImagePath() {
    final String[] imageColumns = { MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DATA };
    final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
    Cursor imageCursor = managedQuery(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
            null, null, imageOrderBy);
    if (imageCursor.moveToFirst()) {
        int id = imageCursor.getInt(imageCursor
                .getColumnIndex(MediaStore.Images.Media._ID));
        String fullPath = imageCursor.getString(imageCursor
                .getColumnIndex(MediaStore.Images.Media.DATA));
        return fullPath;
    } else {
        return "";
    }
}    

干杯!!

【讨论】:

  • 对您有帮助吗?如果是,则接受正确答案,以便其他人从中受益! @巴瓦
  • 我在我的项目中整合它时遇到了麻烦..一旦我完成..我会标记它是正确的,我很确定你说的会奏效。
  • 如何使用图片路径获取我的图片:(
  • 设置你想要存储图像的路径:)
  • 你能来聊天吗?如果你有空,因为这项工作是正式的,对我来说很紧急,
猜你喜欢
  • 2021-05-08
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 2017-07-01
相关资源
最近更新 更多