使用 URI 捕获 Android 图像并通过 PHP 上传到 MySQL 数据库

问题描述

我制作了一个 android 应用程序来从认相机捕获图像,然后使用 bitmap.compress() 对其进行压缩,然后使用 PHP 将其上传到我的 MysqL 数据库。现在的问题是,使用位图我得到的图像质量非常低。我找到了一个解决方案,即使用 URI 而不是 Bitmap 来捕获图像。但是后来我不知道如何使用 URI '通过 PHP 将它上传MysqL'。有人可以将我的代码从 Bitmap 编辑为 URI 并向我输出一个“图像字符串”(就像代码中使用的“encoded_front”字符串变量一样),我可以将其传递给我的 PHP 脚本。非常感谢。

这是我的代码

front_btn.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dexter.withContext(getApplicationContext())
                        .withPermission(Manifest.permission.CAMERA)
                        .withListener(new PermissionListener() {
                            @Override
                            public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
                                Intent front_image=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                startActivityForResult( front_image,111);
                            }

                            @Override
                            public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {

                            }

                            @Override
                            public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest,PermissionToken permissionToken) {
                                permissionToken.continuePermissionRequest();
                            }
                        }).check();
            }
        });
upload_btn.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                insert_db();
            }
        });
protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
        if(requestCode==111 && resultCode==RESULT_OK)
        {
            bitmap=(Bitmap)data.getExtras().get("data");
            encodebitmap(bitmap,1);
        }
        
        super.onActivityResult(requestCode,resultCode,data);
    }
private void encodebitmap(Bitmap bitmap,int i)
    {
        if(i==1)
        {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);

            byte[] byteofimages = byteArrayOutputStream.toByteArray();
            encoded_front = android.util.Base64.encodetoString(byteofimages,Base64.DEFAULT);
// encoded_front is a global string variable

        }
private void insert_db()
    {
 StringRequest request=new StringRequest(Request.Method.POST,apiurl,new Response.Listener<String>() {
            @Override
            public void onResponse(String response)
            {
                
                
                Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_LONG).show();
            }
        },new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error)
            {
                Toast.makeText(getApplicationContext(),error.toString(),Toast.LENGTH_LONG).show();
            }
        })
        {
            @Override
            protected Map<String,String> getParams() throws AuthFailureError
            {
                Map<String,String> map=new HashMap<String,String>();
               
                map.put("front_face",encoded_front);
                
                return map;
            }
        };

        RequestQueue queue= Volley.newRequestQueue(getApplicationContext());
        queue.add(request);
        


    }  // end of function

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...