Cómo agregar imágenes a una presentación

En esta página se describe la forma de agregar imágenes a una presentación existente de Google Slides. Cuando agregas una imagen, proporcionas a la Slides API una URL de acceso público a dicha imagen.

Acerca de las imágenes

Las imágenes de la Slides API son una clase de elemento de página. Como en el caso de cualquier elemento de página, puedes especificar el tamaño y la posición de visualización de la imagen usando las propiedades size y transform de PageElement. Para obtener información más detallada sobre la forma correcta de dimensionar y posicionar tu imagen, consulta Modificar el tamaño y la posición de las formas.

Imágenes privadas

Si deseas colocar una imagen que no esté disponible a través de una URL de acceso público, puedes alojar temporalmente una copia de ella en Google Drive:

  • Carga tu imagen en Google Drive.
  • Crea una URL autorizada para obtener la imagen desde Drive.
  • Agrega la imagen a tu presentación.

Una vez que la imagen aparezca en tu presentación, puedes borrar la copia en Google Drive.

Ejemplo

En el siguiente ejemplo, se muestra la manera de agregar imágenes a una diapositiva usando la Google Drive API para alojarlas temporalmente:

Java

// Temporarily upload a local image file to Drive, in order to to obtain a URL
// for the image. Alternatively, you can provide the Slides service a URL of
// an already hosted image.
File file = new File();
file.setName("My Image File");
FileContent mediaContent = new FileContent(imageMimeType, new java.io.File(imageFilePath));
File uploadedFile = driveService.files().create(file, mediaContent).execute();
String fileId = uploadedFile.getId();

// Obtain a URL for the image.
GenericUrl getFileUrlBuilder = driveService.files().get(fileId).buildHttpRequestUrl();
String imageUrl = getFileUrlBuilder
        .set("access_token", credential.getAccessToken())
        .set("alt", "media").build();

// Create a new image, using a supplied object ID, with content downloaded from imageUrl.
List<Request> requests = new ArrayList<>();
String imageId = "MyImageId_01";
Dimension emu4M = new Dimension().setMagnitude(4000000.0).setUnit("EMU");
requests.add(new Request()
        .setCreateImage(new CreateImageRequest()
                .setObjectId(imageId)
                .setUrl(imageUrl)
                .setElementProperties(new PageElementProperties()
                        .setPageObjectId(slideId)
                        .setSize(new Size()
                                .setHeight(emu4M)
                                .setWidth(emu4M))
                        .setTransform(new AffineTransform()
                                .setScaleX(1.0)
                                .setScaleY(1.0)
                                .setTranslateX(100000.0)
                                .setTranslateY(100000.0)
                                .setUnit("EMU")))));

// Execute the request.
BatchUpdatePresentationRequest body =
        new BatchUpdatePresentationRequest().setRequests(requests);
BatchUpdatePresentationResponse response =
        slidesService.presentations().batchUpdate(presentationId, body).execute();
CreateImageResponse createImageResponse = response.getReplies().get(0).getCreateImage();
System.out.println("Created image with ID: " + createImageResponse.getObjectId());

// Remove the temporary image file from Drive.
driveService.files().delete(fileId).execute();

Python

# Temporarily upload a local image file to Drive, in order to obtain a URL
# for the image. Alternatively, you can provide the Slides servcie a URL of
# an already hosted image.
upload = drive_service.files().create(
    body={'name': 'My Image File', 'mimeType': image_mimetype},
    media_body=image_file_path).execute()
file_id = upload.get('id')

# Obtain a URL for the image.
image_url = '%s&access_token=%s' % (
    drive_service.files().get_media(fileId=file_id).uri, self.credentials.access_token)

# Create a new image, using the supplied object ID, with content downloaded from image_url.
requests = []
image_id = 'MyImage_01'
emu4M = {
    'magnitude': 4000000,
    'unit': 'EMU'
}
requests.append({
    'createImage': {
        'objectId': image_id,
        'url': image_url,
        'elementProperties': {
            'pageObjectId': page_id,
            'size': {
                'height': emu4M,
                'width': emu4M
            },
            'transform': {
                'scaleX': 1,
                'scaleY': 1,
                'translateX': 100000,
                'translateY': 100000,
                'unit': 'EMU'
            }
        }
    }
})

# Execute the request.
body = {
    'requests': requests
}
response = slides_service.presentations().batchUpdate(presentationId=presentation_id,
                                                      body=body).execute()
create_image_response = response.get('replies')[0].get('createImage')
print('Created image with ID: {0}'.format(create_image_response.get('objectId')))

# Remove the temporary image file from Drive.
drive_service.files().delete(fileId=file_id).execute()

PHP

// Temporarily upload a local image file to Drive, in order to obtain a URL
// for the image. Alternatively, you can provide the Slides servcie a URL of
// an already hosted image.
$file = new Google_Service_Drive_DriveFile(array(
  'name' => 'My Image File',
  'mimeType' => $imageMimeType
));
$params = array(
  'data' => file_get_contents($imageFilePath),
  'uploadType' => 'media',
);
$upload = $driveService->files->create($file, $params);
$fileId = $upload->id;

// Obtain a URL for the image.
$token = $driveService->getClient()->fetchAccessTokenWithAssertion()['access_token'];
$endPoint = 'https://www.googleapis.com/drive/v3/files';
$imageUrl = sprintf('%s/%s?alt=media&access_token=%s', $endPoint, $fileId, $token);

// Create a new image, using the supplied object ID, with content downloaded from image_url.
$imageId = 'MyImage_01';
$emu4M = array('magnitude' => 4000000, 'unit' => 'EMU');
$requests = array();
$requests[] = new Google_Service_Slides_Request(array(
  'createImage' => array (
    'objectId' => $imageId,
    'url' => $imageUrl,
    'elementProperties' => array(
      'pageObjectId' => $pageId,
      'size' => array(
        'height' => $emu4M,
        'width' => $emu4M
      ),
      'transform' => array(
        'scaleX' => 1,
        'scaleY' => 1,
        'translateX' => 100000,
        'translateY' => 100000,
        'unit' => 'EMU'
      )
    )
  )
));

// Execute the request.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
  'requests' => $requests
));
$response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest);
$createImageResponse = $response->getReplies()[0]->getCreateImage();
printf("Created image with ID: %s\n", $createImageResponse->getObjectId());

// Remove the temporary image file from Drive.
$driveService->files->delete($fileId);

Enviar comentarios sobre…