Android 设置要上载到Google Drive的缩略图
我使用以下代码设置要在Google Drive上上载的文件的缩略图:Android 设置要上载到Google Drive的缩略图,android,google-drive-api,Android,Google Drive Api,我使用以下代码设置要在Google Drive上上载的文件的缩略图: // Set thumb nail path String thumbnail_path = mediaContent.getFile().getAbsolutePath(); // thumbnail_path : "/sdcard/Picture/ds01.jpg" // File's meta data. File body = new
// Set thumb nail path
String thumbnail_path = mediaContent.getFile().getAbsolutePath();
// thumbnail_path : "/sdcard/Picture/ds01.jpg"
// File's meta data.
File body = new File();
body.setTitle(fileContent.getName());
body.setMimeType("image/jpeg");
// Thumb nail
final Thumbnail thumbnail = new Thumbnail();
thumbnail.setMimeType("image/jpeg");
// UPDATE HERE : define byte array
byte[] data = Base64.decodeBase64(getData(thumbnail_path));
thumbnail.encodeImage(Base64.encodeBase64String(data));
// set thumb nail for file
body.setThumbnail(thumbnail);
代码运行成功,但我认为有问题,我不知道在哪里。
因为我使用了下面的代码来获取与文件相关的信息,并且file.getThumbnail()为null。(getTitle()和getMimeType()成功)
以下代码用于上传,它成功了:
String folderId = ManageFile.getIdLink();
Log.d(TAG, "folderId " + folderId);
body.setParents(Arrays.asList(new ParentReference().setId(folderId)));
File file = service.files().insert(body, mediaContent).execute();
更新:
-我添加了这些代码来描述如何获取字节数组
protected byte[] getData(String thumbnail_path) {
byte[] imageData = null;
final int THUMBNAIL_SIZE = 96;
FileInputStream fis;
try {
fis = new FileInputStream(thumbnail_path);
Bitmap imageBitmap = BitmapFactory.decodeStream(fis);
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
// byte data array
imageData = baos.toByteArray();
return imageData;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
p/s:
-
-
请告诉我如何成功获得拇指指甲图像。
谢谢 您需要提供Base64编码的图像内容,而不是路径
final Thumbnail thumbnail = new Thumbnail();
thumbnail.setMimeType("image/jpeg");
thumbnail.setImage(base64encodedContent);
您可以对未编码的
getData
方法中的数据进行解码
您还应该使用Base64.encodebase64urlsafesting
而不是Base64.encodeBase64String
。您可以使用该方法作为一种方便。这将为您进行编码
替换此项:
byte[] data = Base64.decodeBase64(getData(thumbnail_path));
thumbnail.setImage(Base64.encodeBase64String(data));
为此:
byte[] data = getData(thumbnail_path);
thumbnail.encodeImage(data);
很抱歉,但您的代码将显示警告:“无效值:不是有效的base64字节字符串”。如果使用了我的代码,警告不会显示。@AlexTran对不起,我误读了代码。我编辑了我的答案。非常感谢你们的努力,你们的代码很好,好的,但我得到了“base64encodedContent”评论的感谢。我更新了我的问题,请检查是否有新错误(file.getThumbnail()为空),请帮助我。
byte[] data = getData(thumbnail_path);
thumbnail.encodeImage(data);