3

我正在使用 Google Slides API 将图像插入 Google Slide,我的代码是

    $emu4M = array('magnitude' => 5500000, 'unit' => 'EMU');
    $requests = array();
    $requests[] = new Google_Service_Slides_Request(array(
      'createImage' => array (
        'objectId' => '303030',
        'url' => $imageUrl,
        'elementProperties' => array(
          'pageObjectId' => $pageId,
          'size' => array(
            'height' => $emu4M,
            'width' => $emu4M
          ),
          'transform' => array(
            'scaleX' => 1,
            'scaleY' => 1,
            'translateX' => 5000,
            'translateY' => 5000,
            'unit' => 'EMU'
          )
        )
      )
    ));

它工作正常,但插入的图像是这样的

由 Google Slides API 创建的幻灯片

我希望图像出现在中心并减少顶部的填充。有什么帮助吗?

4

2 回答 2

3

Google Slides API 可能会将您的转换请求结果更改为您未询问过的内容:

创建页面元素时,您可以指定提供特定视觉结果的大小和变换。但是,API 可能会将您提供的值替换为产生相同视觉外观的其他值。通常,如果您使用 API 编写大小,则不能保证返回相同的大小。

来源:https ://developers.google.com/slides/how-tos/transform#the_slides_api_might_refactor_your_values


将图像插入谷歌幻灯片中心的相对安全的方法是通过ReplaceAllShapesWithImageRequest.

首先,您需要创建占位符形状并将其放置在幻灯片的中心:

在此处输入图像描述

然后用您的图像替换形状(Google Apps 脚本语言中的示例):

function insertImageCentered()
{
  var presentation = SlidesApp.getActivePresentation();
  
  var requests = [{
    "replaceAllShapesWithImage": {
      "imageUrl": "https://docs.google.com/drawings/d/e/2PACX-1vR5mi6ujksb_2WtTFmk39IPYBIBlJ6WkzM1nsys9cT4Wquik627DDIRXzoYTgHPKX3fcvJzG9inDmJt/pub?w=960&h=720",
        "imageReplaceMethod": "CENTER_INSIDE",
        "pageObjectIds": [presentation.getSlides()[0].getObjectId()],
        "containsText": {
          "text": "{{CENTERED_SHAPE}}",
          "matchCase": false
        }
     }
   }];
  
   Slides.Presentations.batchUpdate({'requests': requests}, presentation.getId());
}

幻灯片中心的结果图像:

在此处输入图像描述

于 2018-05-19T19:59:44.043 回答
1

幻灯片图像定位的工作原理是根据您给定的大小创建一个矩形,在该矩形中拟合实际图像的纵横比,然后应用您的变​​换。因此,如果您提供的尺寸与图像的纵横比不匹配,您通常会获得额外的填充。

确保您提供的大小与图像的大小相匹配,然后对 pageSize 和图像大小进行一些数学运算,以找出要使用的 translateX/translateY 的正确值。

于 2017-12-06T15:41:02.247 回答