kotlin 摄影机器人

iklwldmw  于 2022-11-30  发布在  Kotlin
关注(0)|答案(1)|浏览(135)

我正在使用改型Multipart请求上载图像,并且该图像已成功上载到服务器,在另一个屏幕中,我想实现更改或删除该图像的功能,当我从服务器获取图像时,我只得到了图像的名称和一个基本URL,通过使用它,我可以在ImageView/中显示图片RecyclerView和问题是我不能上传完全相同的图像再次,因为我只有图像的名称,在Android中,有没有什么方法可以通过提供图像的名称(如1000007983.jpg)来获取图像作为文件。
我已经尝试从服务器返回的URL创建文件,但得到一个文件未找到的错误。

tp5buhyn

tp5buhyn1#

如果你可以在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)
                }

相关问题