【问题标题】:Convert OutputStream (to File) to Bitmap将 OutputStream(到文件)转换为位图
【发布时间】:2016-10-20 18:36:35
【问题描述】:

借助 Google Drive Rest Api,我尝试使用 this 下载广告图片。

我得到一个包含此代码的文件列表:

List<String> fileInfo = new ArrayList<>();
FileList result = mService.files().list()
        .setPageSize(10)
        .setQ("mimeType='image/jpeg'")
        .setFields("nextPageToken, files(id, name)")
        .execute();
        List<File> files = result.getFiles();
        if (files != null) {
            for (File file : files) {
                fileInfo.add(String.format("%s (%s)\n",
                        file.getName(), file.getId()));
            }
        }

而且它有效。然后,通过文件 id,我获得了一个带有以下代码的 OutputStream:

String fileId = "file_id";
OutputStream fOut = new ByteArrayOutputStream();
mService.files().export(fileId,"image/jpeg").executeMediaAndDownloadTo(fOut);

现在,如何将其转换为文件,然后再转换为位图?

【问题讨论】:

    标签: android bitmap outputstream bytearrayoutputstream


    【解决方案1】:

    你可以试试这个。 byte[] bitmapdata = fOut.toByteArray(); Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);

    【讨论】:

    • toByteArray() 是 ByteArrayOutputStream 类的方法。因此,如果合适,请将您的 OutputStream 替换为 ByteArrayOutputStream。
    【解决方案2】:

    老问题,但仍然相关......也许这在当时是不可能的,但现在应该这样做:

    try (InputStream is = mService.files().get(fileId).executeMediaAsInputStream()) {
        return BitmapFactory.decodeStream(is);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 2020-11-27
      • 2018-07-19
      • 2022-01-02
      • 2019-06-17
      • 2018-10-04
      • 2020-09-28
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多