【问题标题】:Android Studio - Convert Bitmap into java.io.FileAndroid Studio - 将位图转换为 java.io.File
【发布时间】:2016-12-25 11:48:15
【问题描述】:

我从一个视频文件创建了一个视频缩略图。我需要做的是从Bitmap 创建一个java.io.File,以便将缩略图上传到服务器。怎么可能做到这一点?

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(videoFile.getPath(), MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);

File thumbFile = ?

【问题讨论】:

  • 待办事项的代码经常在这里发布。只是谷歌一点。或者阅读一个二十页标记的android。原则上,您将位图压缩为文件输出流。
  • 谢谢。。一直在找,但好像找不到。

标签: java android bitmap java-io


【解决方案1】:

可以使用以下代码:

 //create a file to write bitmap data
File f = new File(context.getCacheDir(), filename);

//f.createNewFile(); (No need to call as FileOutputStream will automatically create the file)

//Convert bitmap to byte array
Bitmap bitmap = your bitmap;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();

//write the bytes in file
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();

你也可以试试这个方法:它不会将位图转换为字节数组..

private static void bitmap_to_file(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);
  }
}

【讨论】:

  • //Convert bitmap to byte array。馊主意。您可以将 Bitmap 直接压缩到 FileOutputStream。
  • f.createNewFile();。错误的。 FileOurputStream 将创建文件。删除该语句,因为它令人困惑且不需要。
  • 这行不通。还有其他方法可以实现吗?
  • 文件没有创建吗?
猜你喜欢
  • 2013-07-21
  • 2014-05-12
  • 2013-06-03
  • 2018-08-11
  • 1970-01-01
  • 2019-07-19
  • 2021-12-27
  • 1970-01-01
  • 2013-12-15
相关资源
最近更新 更多