Как насчет этого ответа?
Проблема:
Я думаю, что на текущем этапе replace(blobSource, crop)
имеет ограничение. Официальный документ гласит следующее.
crop
Boolean : если true, обрезает изображение, чтобы оно соответствовало размеру существующего изображения. В противном случае изображение масштабируется и центрируется.
Я подтвердил, что при кадрировании изображения с помощью replace(blobSource, crop)
центр изображения остается. Похоже, это текущая спецификация. И хотя в Slides API есть «ropProperties »из« UpdateImagePropertiesRequest », к сожалению, на текущем этапе его нельзя использовать. Об этом уже сообщалось. Ref
Пример сценария:
Если вы используете replace(blobSource, crop)
в соответствии с текущей спецификацией, как насчет следующего примера сценария? В качестве примера ситуации, 2 изображения «image1» и «image2» подготовлены на 1-м слайде, а «image1» обрезается с использованием «image2».
Последовательность этого скрипта выглядит следующим образом.
Поток:
- Получить 2 изображения со слайда в Google Slides.
- Обрезать «изображение1» с помощью «изображение2». Таким образом, «изображение2» заменяется на «изображение1».
- Переместить обрезанное изображение в «изображение1».
- Удалить исходное «изображение1».
Скрипт:
function myFunction() {
// 1. Retrieve 2 images from a slide on Google Slides.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var images = slide.getImages();
var image1 = images[0]; // Red image.
var image2 = images[1]; // Blue image.
// 2. Crop "image1" using "image2". By this, "image2" is replaced with "image1".
var replacedImage = image2.replace(image1.getBlob(), true);
// 3. Move the cropped image to "image1".
replacedImage.setTop(image1.getTop()).setLeft(image1.getLeft());
// 4. Remove the original "image1".
image1.remove();
}
Результат:
При запуске скрипта "image1" обрезается. Но обнаружено, что на текущем этапе центр image1 остается за кадром.
Note:
- Slides API and Slides Service are growing now. So I think that this situation might be changed by the future update. But if you want this soon, how about requesting this to the issue tracker as the future request? Ref
Ссылки:
Добавлено:
В дополнительном примере сценария для использования replace(blobSource, crop)
я хотел бы предложить метод использования собственного образа. В этом примере сценария, когда изображение выступает, изображение вне страницы удаляется путем обрезки. Метод basi c аналогичен приведенному выше образцу сценария.
Пример сценария:
function myFunction() {
var s = SlidesApp.getActivePresentation();
var slide = s.getSlides()[0];
var images = slide.getImages();
var image = images[0];
var pageWidth = s.getPageWidth();
var imagePosition = image.getLeft();
var imageWidth = image.getWidth();
var check = imagePosition + imageWidth - pageWidth;
if (check > 0 && check < imageWidth) {
image
.duplicate()
.setWidth(pageWidth - imagePosition)
.asImage()
.replace(image.getBlob(), true);
image.remove();
}
}
Результат:
введите описание изображения здесь
Примечание:
- В этом примере скрипта в качестве простого примера я подготовил только правую часть горизонтального направления. Поэтому, если вы хотите удалить вертикальное направление, пожалуйста, измените сценарий для вашей реальной ситуации.