将 OutputStream(到文件)转换为位图
Convert OutputStream (to File) to Bitmap
使用 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);
现在,如何将其转换为文件,然后再转换为位图?
你可以试试这个。
byte[] bitmapdata = fOut.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
老问题,但仍然相关...也许这在当时是不可能的,但现在应该可以:
try (InputStream is = mService.files().get(fileId).executeMediaAsInputStream()) {
return BitmapFactory.decodeStream(is);
}
使用 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);
现在,如何将其转换为文件,然后再转换为位图?
你可以试试这个。
byte[] bitmapdata = fOut.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
老问题,但仍然相关...也许这在当时是不可能的,但现在应该可以:
try (InputStream is = mService.files().get(fileId).executeMediaAsInputStream()) {
return BitmapFactory.decodeStream(is);
}