Как насчет этого ответа?
Проблема:
Я думаю, что на данном этапе у replace(blobSource, crop)
есть ограничение. В официальном документе говорится следующее.
crop
Boolean: если true, изображение обрезается по размеру существующего. В противном случае изображение масштабируется и центрируется.
Я подтвердил, что когда изображение обрезается с помощью replace(blobSource, crop)
, центр изображения остается. Похоже, это текущая спецификация. И хотя в Slides API естьropProperties UpdateImagePropertiesRequest, к сожалению, на текущем этапе его нельзя использовать. Об этом уже сообщалось. Ссылка
Пример сценария:
Если вы используете replace(blobSource, crop)
в соответствии с текущей спецификацией, как насчет следующего примера сценария? В качестве примера ситуации на 1-м слайде подготавливаются 2 изображения image1 и image2, а image1 кадрируется с использованием image2.
Последовательность этого скрипта выглядит следующим образом.
Поток:
- Получите 2 изображения из слайда в Google Slides.
- Обрежьте image1, используя image2. Таким образом, изображение2 заменяется на изображение1.
- Переместите обрезанное изображение на image1.
- Удалить исходное изображение 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 остается за кадром.
Примечание:
- Slides API и Slides Service сейчас растут. Так что я думаю, что эта ситуация может быть изменена в будущем обновлении. Но если вы хотите этого в ближайшее время, как насчет того, чтобы запросить это в системе отслеживания проблем в качестве будущего запроса? Ссылка
Использованная литература:
Добавлен:
В дополнительном примере сценария для использования replace(blobSource, crop)
я хотел бы предложить метод использования собственного образа. В этом примере сценария, когда изображение выступает, изображение вне страницы удаляется путем обрезки. Основной метод такой же, как и в приведенном выше примере сценария.
Пример сценария:
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();
}
}
Результат:
Примечание:
- В этом примере сценария я подготовил только правую часть горизонтального направления. Поэтому, если вы хотите удалить вертикальное направление, пожалуйста, измените сценарий для вашей реальной ситуации.
person
Tanaike
schedule
04.08.2020