Фотоподборщик андроид

Я использую модифицированный запрос 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)
                }
Другие вопросы по тегам