0

次のコードを使用して、Google ドライブにアップロードするファイルのサムネイルを設定します。

// 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() は成功します)。

private static void printFile(Drive service, String fileId) {
        try {
            File file = service.files().get(fileId).execute();

            System.out.println("Title: " + file.getTitle());
            System.out.println("MIME type: " + file.getMimeType());
            System.out.println("getThumbnail: " + file.getThumbnail());
        } catch (IOException e) {
            System.out.println("An error occured: " + e);
        }
    }

次のコードはアップロード用で、成功しました:

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 : -ファイルの取得 -ファイル リソース

サムネール画像を成功させる方法を教えてください。ありがとう!

4

2 に答える 2

1

パスの代わりに、Base64 でエンコードされた画像コンテンツを提供する必要があります。

final Thumbnail thumbnail = new Thumbnail();                    
thumbnail.setMimeType("image/jpeg");            
thumbnail.setImage(base64encodedContent);
于 2013-07-16T14:43:58.620 に答える