幻灯片API-如何裁剪图片?

时间:2019-10-31 09:59:43

标签: google-api google-slides-api

我正在使用Google幻灯片API。 我需要从演示文稿A拍摄一张要复制粘贴到演示文稿B中的图像。

我使用演示文稿A中的“ presentations()。get”方法来获取图像。然后,我在batchUpdate方法中使用“ createImage”和“ updateImageProperties”请求来更新演示文稿B。

不幸的是,我无法更新作为只读属性的cropProperties,透明度,亮度,对比度和重新着色。

因此,我在演示文稿B中的图像与从演示文稿A中获得的图像不同(例如,任何裁剪的图像都呈现出可怕的效果)。

这是我所讨论的代码的一部分。

def insert_image(pageElement, page_id):
    image_id = str(uuid.uuid4())
    requests = []
    requests.append({'createImage': {'objectId': image_id, 'url': pageElement['image']['contentUrl'], 'elementProperties': {
        'pageObjectId': page_id, 'size': pageElement['size'], 'transform': pageElement['transform']}}})
    requests.append({'updateImageProperties': {'objectId': image_id,
                                               'imageProperties': pageElement['image']['imageProperties'], 'fields': "outline,shadow,link"}})
    return requests

是否有任何变通办法将正确的属性应用于我的图片B?

我正在考虑2种方法: -使用Google AppScript -将图像作为裁剪后的图像保存在磁盘上

在这个问题上任何帮助都将是惊人的:)

1 个答案:

答案 0 :(得分:0)

前一段时间,我遇到了同样的问题。作物属性是只读的真是令人讨厌。我找到了一个不太理想的解决方案。它不是最快或最干净的,但是可以完成工作。我的工作是通过Apps Script完成的,但我认为批处理请求应该是相同的。 基本上,这些步骤是:

  1. 使用setWidth()将图像调整为所需的尺寸 和setHeight()。 https://developers.google.com/apps-script/reference/slides/image 根据您调整大小,图像可能会失真。
    1. 从形状中获取图片网址。https://developers.google.com/apps-script/reference/slides/image#getContentUrl() 用相同的网址替换形状中的图像并设置裁剪 价值为真。 https://developers.google.com/apps-script/reference/slides/image#replace(String,Boolean)这样可以将图像重置为正确的比例,并在调整大小的帧中裁剪。

不幸的是,这很慢,因为它必须重新获取每个图像。另外,您无法控制确切的裁剪。它将在框架中居中。

希望这会有所帮助