**我希望将图像转换为base64字符串。请帮我在android演播室处理我的代码
这是我的代码,在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)
}
}
}
}
}发布于 2021-02-05 09:14:58
在您的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字符串并对其进行处理。我希望它能帮助你:)
https://stackoverflow.com/questions/66060446
复制相似问题