Я нашел много ответов, связанных с этим в Java, возможно, решение Kotlin будет очень похоже на Java, но, как и во многих других вещах, дьявол кроется в деталях, и некоторые есть.
У меня есть несколько хранилищ Uris в базе данных SQLite, которую я использую, теперь я хочу отправить эти изображения в API, который будет перехватывать их вместе с другими данными. Я отправлю информацию через POST.
Итак, теперь я хочу загрузить Uri, как я это делаю, когда использую ImageView.setImageURI()
, который возьмет Uri, преобразует его в растровое изображение и помещает его в контейнер ImageView.
Как мне преобразовать этот Uri в объект Bitmap, а затем закодировать его в Base64, чтобы отправить его в API, используя код Kotlin?
EDIT
Я пытаюсь с imageFileToBase64()
от Анупама, который, кажется, именно то, что я хочу, теперь у меня проблема, я получил FileNotFoundException
. Это то, что я делаю.
Я восстанавливаю строку Uri из базы данных, это строка, которая читает: content: // media / external / images / media / 109, поэтому я преобразовываю ее в Uri
val uri = Uri.parse(uri_string)
Затем я получаю реальный путь и преобразовываю его в File
val file = File(uri.path)
Наконец я вызываю функцию
val base64 = imageFileToBase64(file)
Я пробовал оба с uri.path
и uri.toString()
и получил одинаковые результаты.
uri.path
= / external / images / media / 109
uri.toString()
= контент: / мультимедиа / внешний / изображения / мультимедиа / 109
Так что я понятия не имею, что передать функции.