【问题标题】:convert android.graphics.Bitmap to java.io.File将 android.graphics.Bitmap 转换为 java.io.File
【发布时间】:2014-05-12 03:42:33
【问题描述】:

我想像这样使用分段上传将编辑后的位图图像上传到服务器,

multipartEntity.addPart("ProfilePic", new FileBody(file));

但我无法将位图(android.graphics.Bitmap)图像转换为文件(java.io.File)。

我尝试将其转换为字节数组,但也没有成功。

有人知道android的内置功能或任何将位图转换为文件的解决方案吗?

请帮忙...

【问题讨论】:

标签: android android-bitmap


【解决方案1】:

应该这样做:

private static void persistImage(Bitmap bitmap, String name) {
  File filesDir = getAppContext().getFilesDir();
  File imageFile = new File(filesDir, name + ".jpg");

  OutputStream os;
  try {
    os = new FileOutputStream(imageFile);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
    os.flush();
    os.close();
  } catch (Exception e) {
    Log.e(getClass().getSimpleName(), "Error writing bitmap", e);
  }
}

更改Bitmap.CompressFormat 和扩展名以满足您的目的。

【讨论】:

  • 非常感谢。我需要使用 Retrofit 上传作为应用程序/八位字节流捕获的图像,并且您的代码有效。 +1
【解决方案2】:

虽然选择的答案是正确的,但对于那些正在寻找 Kotlin 代码的人来说。在这里,我已经写了一篇关于 Java 和 Kotlin 主题的详细文章。 Convert Bitmap to File in Android.

fun bitmapToFile(bitmap: Bitmap, fileNameToSave: String): File? { // File name like "image.png"
        //create a file to write bitmap data
        var file: File? = null
        return try {
            file = File(Environment.getExternalStorageDirectory().toString() + File.separator + fileNameToSave)
            file.createNewFile()

            //Convert bitmap to byte array
            val bos = ByteArrayOutputStream()
            bitmap.compress(Bitmap.CompressFormat.PNG, 0, bos) // YOU can also save it in JPEG
            val bitmapdata = bos.toByteArray()

            //write the bytes in file
            val fos = FileOutputStream(file)
            fos.write(bitmapdata)
            fos.flush()
            fos.close()
            file
        } catch (e: Exception) {
            e.printStackTrace()
            file // it will return null
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 2013-06-03
    • 2018-08-11
    • 1970-01-01
    • 2019-07-19
    • 2021-12-27
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多