Фотоподборщик андроид
Я использую модифицированный запрос Multipart для загрузки изображения, и оно успешно загружается на сервер, на другом экране я хочу реализовать функциональность для изменения или удаления этого изображения, и когда я получаю изображение с сервера, я получил только имя изображение и базовый URL-адрес, с помощью которого я могу отображать изображение в ImageView/RecyclerView, и проблема в том, что я не могу снова загрузить точно такое же изображение, так как у меня есть только имя изображения, есть ли способ в Android, откуда Я могу получить изображение в виде файла, просто указав имя изображения, например (1000007983.jpg).
Я попытался создать файл из URL-адреса, который сервер ретурирует, но ошибка файла не найдена.
1 ответ
если вы можете показать изображение в ImageView, вы можете получить его как растровое изображение, а затем преобразовать его обратно в файл. Это метод, который я использую для преобразования изображения в растровое изображение, а затем растровое изображение в файл.
val bitmap = (binding.IDImg.drawable as BitmapDrawable).bitmap
private fun bitmapToFile(bitmap: Bitmap): File? {
val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
val filesDir: File = applicationContext.filesDir
val imageFile = File(filesDir, "temp_file_ $timeStamp.jpg")
val os: OutputStream
return try {
os = FileOutputStream(imageFile)
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os)
os.flush()
os.close()
imageFile
} catch (e: java.lang.Exception) {
Log.e(javaClass.simpleName, "Error writing bitmap", e)
imageFile
}
}
После получения imageFile из этого метода я снова загружаю на сервер, как это
val imageFile = bitmapToFile(image)
if (imageFile != null) {
val newImage = imageFile.asRequestBody("multipart/form-data".toMediaTypeOrNull())
body = MultipartBody.Part.createFormData("image", imageFile.name, newImage)
uploadID(type!!, body!!, name)
}