有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用CircleImageView Android Studio保存图像

我写了一个程序,用户可以点击一个文本视图(editPhoto),选择一个图像(配置文件图片)并显示在配置文件上,还可以将其与其他配置文件详细信息一起保存在我的数据库中,但一旦我离开页面,图片就会从CircleImageView中消失,尽管它仍然保存在我的数据库中。我能够保存在个人资料上的其他用户信息,如姓名、用户名、电子邮件等。setText()那么如何对轮廓图片的CircleImageView执行相同的操作呢?提前谢谢

代码:

 private TextView editPhoto;
 CircleImageView profilePic;
 
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_profile);

        profilePic = findViewById(R.id.profilepic);
        editPhoto = findViewById(R.id.txtEditPP);
       
        editPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chooseFile();
            }
        });
    }

 private void chooseFile(){
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Choose Photo"),1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null){
            Uri filepath = data.getData();

            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filepath);
                profilePic.setImageBitmap(bitmap);

            } catch (IOException e) {
                e.printStackTrace();
            }

            UploadPicture(getId, getStringImage(bitmap));
        }
    }

    //UPLOAD PROFILE PICTURE
    private void UploadPicture(final String id, final String photo) {

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_UPLOAD, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i(TAG, response.toString());

                try {
                    JSONObject jsonObject = new JSONObject(response);

                    String success = jsonObject.getString("success");

                    if (success.equals("1")){
                        Toast.makeText(EditProfile.this, "Photo Uploaded", Toast.LENGTH_SHORT).show();

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(EditProfile.this, "Error Uploading Image!", Toast.LENGTH_SHORT).show();
                }

            }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(EditProfile.this, "Error Uploading Image!", Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("ID", id);
                params.put("photo", photo);
                return params;
            }
        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);

    }

    public String getStringImage(Bitmap bitmap){
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);

        byte[] imageByteArr = byteArrayOutputStream.toByteArray();
        String encodedImage = Base64.encodeToString(imageByteArr, Base64.DEFAULT);

        return encodedImage;
    }

共 (1) 个答案

  1. # 1 楼答案

    在onResume中,能否使用位图对象重新加载imageView? 另外,将位图对象作为类变量重新加载图像在这种情况下也适用