将 img 转换为 base64 kotlin android

Convert img to base64 kotlin android

**我想将图片转换成base64字符串。请在 android studio

中帮助我编写代码

这是我的代码,请帮助我使用 kotlin android 我尝试了很多方法,但我无法得到它 你们能帮我吗? 我还想知道我需要在哪个函数中将图像转换为 base64,图像存储在哪里,我直接从图库中获取图像

**

    private var uploadImageLabelText: TextView? = null
    private var uploadImageBox: RelativeLayout? = null

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_support)
    setStatusBarColorLight(R.color.dim_white)

      uploadImageLabelText = getView(R.id.upload_image_label)
      uploadImageBox = getView(R.id.upload_image_box)

      uploadImageBox?.setOnClickListener {
            requestExternalReadPermission()


       private fun requestExternalReadPermission() {
        if (ContextCompat.checkSelfPermission(
                this,
                Manifest.permission.READ_EXTERNAL_STORAGE
            )
            != PackageManager.PERMISSION_GRANTED
            ) {

            ActivityCompat.requestPermissions(
                this,
                arrayOf<String> 
            (Manifest.permission.READ_EXTERNAL_STORAGE),
                FG_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE
            );
        } else {
            chooseFile()
        }
        }
        private fun chooseFile() {
        var chooseFile = Intent(Intent.ACTION_GET_CONTENT)
        chooseFile.type = "*/*"
        chooseFile = Intent.createChooser(chooseFile, "Select a file to 
       upload the image")
        startActivityForResult(chooseFile, 
        SUPPORT_SCREEN_CHOOSE_UPLOAD_FILE_REQUEST_CODE)
        }
      override fun onActivityResult(requestCode: Int, resultCode: Int, 
         data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

     if (requestCode == SUPPORT_SCREEN_CHOOSE_UPLOAD_FILE_REQUEST_CODE && 
      resultCode == RESULT_OK
    ) {
        data?.data?.let { uri ->

            uploadFileUri = uri

            val cursor = contentResolver.query(uri, null, null, null,  
            null) 
        
            if (cursor != null) {
                val nameIndex = 
                 cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
                val sizeIndex = 
                cursor.getColumnIndex(OpenableColumns.SIZE)
                cursor.moveToFirst()


                val fileName = cursor.getString(nameIndex)
                System.out.println(fileName)
                setFileNameToUploadButton(fileName)

                //saveFileToCache(cursor.getString(nameIndex))

            } else {

                val filePath = uri.path

                var fileName = ""

                val cut = filePath.lastIndexOf('/')

                if (cut != -1) {
                    fileName = filePath.substring(cut + 1)
                }


                setFileNameToUploadButton(fileName)
                System.out.println(fileName)
                //saveFileToCache(fileName)
            }
        }
    }

}


            
        }

在你的onActivityResult()中你可以使用这样的方式:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK) {
            val documentFile: DocumentFile = DocumentFile.fromSingleUri(this, data!!.data!!)!!
            val string = data.data?.let { uri -> contentResolver.openInputStream(uri).use { it!!.readBytes() } }


            //Base64.encodeToString(string, Base64.NO_WRAP)

        }
    }

此处:

Base64.encodeToString(string, Base64.NO_WRAP)

您可以将您的文件编码为 Base64 字符串并对其进行处理。希望对您有所帮助:)