Google Slides API, позиционирование изображения на слайде

Я вставляю изображение в Google Slide с помощью Google Slides API, мой код

    $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

Я хочу, чтобы изображение появлялось в центре и уменьшало отступ сверху. Любая помощь?

2 ответа

Решение

Google Slides API может изменить ваш запрос на преобразование на то, что вы не просили:

Когда вы создаете элемент страницы, вы можете указать размер и преобразование, которые обеспечивают определенный визуальный результат. Однако API может заменить предоставленные вами значения другими, которые дают такой же визуальный вид. В общем, если вы пишете размер с помощью API, вам не гарантируется, что вам будет возвращен тот же размер.

Источник: https://developers.google.com/slides/how-tos/transform


Относительно безопасный способ вставки изображения в центр Google Slide - через 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",
        "replaceMethod": "CENTER_INSIDE",
        "pageObjectIds": [presentation.getSlides()[0].getObjectId()],
        "containsText": {
          "text": "{{CENTERED_SHAPE}}",
          "matchCase": false
        }
     }
   }];

   Slides.Presentations.batchUpdate({'requests': requests}, presentation.getId());
}

Результирующее изображение в центре слайда:

Позиционирование изображений слайдов работает путем создания прямоугольника на основе заданного вами размера, подгонки фактического изображения в этом прямоугольнике и применения преобразования. В результате вы часто будете получать дополнительные отступы, если предоставленный вами размер не соответствует соотношению сторон изображения.

Убедитесь, что размер, который вы предоставляете, соответствует размеру изображения, а затем выполните математические расчеты с размером страницы и размером изображения, чтобы определить правильные значения translateX/translateY для использования.

Другие вопросы по тегам