Top.Mail.Ru

CDN

Image stack. Обрезать области изображения

Что это? Обрезка — операция Image stack, которая обрезает исходное изображение перед тем, как доставить его через CDN. Параметры обрезки (какого размера фрагмент вырезать и из какой части изображения) вы или ваши пользователи задаёте сами для каждого изображения.

Пример. На сервере-источнике хранится картинка размером 500×500 пикселей, но вы с помощью Обрезки задали новый размер 200×200 и обрезку по центру. При доставке через CDN картинка автоматически уменьшилась — от неё было отрезано всё лишнее, кроме фрагмента 200×200 в центре. На источнике по-прежнему хранится изображение 500×500, но пользователи получают его уменьшенный вариант — 200×200.

Как работает? Чтобы использовать Обрезку, добавьте нужные параметры запросов в URL картинок. Если вы установили эти параметры на источнике, CDN отдаст пользователям обрезанную копию картинки. Если на источнике таких параметров нет, пользователи смогут задать их самостоятельно с помощью параметров запроса.

Внимание. Image stack не может преобразовывать изображения размером более 32 МБ.

Особенности. Обрезка входит в платную опцию Image stack. Эта опция помогает оптимизировать изображения: конвертировать в формат WebP и AVIF, обрезать, изменять качество и размеры. Чтобы использовать Обрезку, нужно подключить Image stack.

1. Подключите опцию Image stack к CDN-ресурсу согласно инструкции «Как подключить опцию».

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

2. Откройте код сайта-источника.

3. Найдите строки с URL тех изображений, которые хотите обрезать с помощью Обрезки.

4. Добавьте в URL изображений параметр запроса с нужными значениями в формате:

image.jpg?параметр=значения

где image.jpg — URL вашего изображения на сайте. Все доступные параметры описаны в разделе «Параметры Обрезки».

5. Сохраните изменения в коде сайта-источника.

Настройка закончена! Теперь, когда пользователь перейдёт на страницу сайта, она откроется с обрезанными картинками.

С помощью Обрезки можно вырезать фрагмент из исходной картинки — именно этот фрагмент получат конечные пользователи. Откуда вырезать фрагмент и какого он будет размера, можно указать в параметре запроса. Вариантов настройки три, ниже описан каждый из них. 

Параметр?crop=4:8

Где:

  • 4 — отношение ширины вырезаемого фрагмента к его высоте

  • 8 — отношение высоты вырезаемого фрагмента к его ширине

Как работает: операция равномерно обрежет картинку, чтобы соотношение сторон изменилось так, как указано в запросе. 
 
Пример: на сервере-источнике хранится картинка 500×600. Её соотношение сторон — 5:6. Чтобы показать его, мы добавили сетку на картинку.
Image stack. Обрезать области изображения

Вы задали новое соотношение сторон — 4:8, добавив к URL картинки параметр запроса:

img.jpg?crop=4:8

Операция выделит фрагмент с таким соотношением сторон по центру исходного изображения.

Image stack. Обрезать области изображения

Затем она отрежет лишнее. Вот какую картинку увидят пользователи сайта:

Image stack. Обрезать области изображения

Как Обрезка рассчитала, какой фрагмент вырезать:

1. Сравнила числа из пропорции (4 и 8) и выбрала большее (8). Так Обрезка определила, какую сторону исходной картинки уменьшать не нужно. 8 соответствует высоте, значит, высота останется прежней — 600 пикселей.

2. Определила новый размер ширины, который будет соответствовать пропорции. Для этого умножила исходную высоту на соотношение 4:8 — то есть 600 умножила на 4:8. Получила новый размер ширины — 300 пикселей.

3. Разместила фрагмент размером 300×600 в центре исходной картинки и вырезала его.

Параметр?crop=300,400

Где:

  • 300 — ширина вырезаемого фрагмента

  • 400 — высота вырезаемого фрагмента

Как работает: Обрезка обрежет всё лишнее, оставив только фрагмент в центре.

Пример: на сервере-источнике хранится изображение 500×600. Вы хотите оставить только фрагмент 300×400 в центре. Для этого вы добавляете к URL изображения нужный параметр:

img.jpg?crop=300,400

Image stack. Обрезать области изображения

Обрезка вырежет из центра фрагмент 300×400. Именно этот фрагмент получат пользователи, загрузив страницу сайта.

Image stack. Обрезать области изображения

Чтобы вырезать фрагмент из конкретной части, в параметре запроса нужно указать сначала ширину и высоту фрагмента (например,?сrop=(ширина),(высота)), а затем место, откуда его вырезать. Место можно указать четырьмя способами, их мы описываем ниже. 

• Указать место с помощью двух отступов, измеренных в пикселях

Параметр: ?сrop=300,350,x110,y30

Где:

  • 300 — ширина вырезаемого фрагмента

  • 350 — высота вырезаемого фрагмента

  • 110 — сколько пикселей нужно отступить от левого края исходного изображения

  • 30 — сколько пикселей нужно отступить от верхнего края исходного изображения

Как работает: операция приложит верхний левый угол фрагмента к координате, которую вы указали, и вырежет этот фрагмент из картинки.

Пример: на сервере-источнике хранится картинка 500×600; вы хотите вырезать из неё фрагмент размером 300×350, чтобы оставить только мордочку собаки.

Чтобы обрезать картинку, вы добавляете в ссылку параметр запроса:

img.jpg?crop=300,350,x110,y30

Вот какие действия произойдут с картинкой перед тем, как CDN доставит её пользователю:

1. В параметре запроса вы указали размер фрагмента 300×350 (crop=300,350,x110,y30), поэтому Обрезка выделит такой фрагмент на картинке.

Image stack. Обрезать области изображения

2. Вы также указали, где начать обрезку — в точке с координатой 110 пикселей от левого края и 30 пикселей сверху (crop=300,350,x110,y30). Обрезка сместит обрезаемый фрагмент так, чтобы его левый угол совпал с этой точкой.

Image stack. Обрезать области изображения

3. Операция вырежет фрагмент. Итоговая картинка получится такой:

Image stack. Обрезать области изображения

• Указать место с помощью двух координат, измеренных в процентах от исходного изображения

Параметр: ?crop=300,350,x22p,y5p

Где:

  • 300 — ширина вырезаемого фрагмента

  • 350 — высота вырезаемого фрагмента

  • 22 — сколько процентов от ширины исходного изображения нужно отступить от левого края

  • 5 — сколько процентов от высоты исходного изображения нужно отмерить от верхнего края

Как работает: Обрезка приложит верхний левый угол фрагмента к координате, которую вы указали, и вырежет этот фрагмент из картинки.

Пример: на сервере-источнике хранится картинка 500×600; вы хотите вырезать из неё фрагмент размером 300×350, чтобы оставить только мордочку собаки.

Чтобы обрезать картинку, вы добавляете в ссылку параметр запроса:

img.jpg?crop=300,350,x22p,y5p

Вот какие действия произойдут с картинкой перед тем, как CDN доставит её пользователю:

1. В параметре запроса вы указали размер фрагмента 300×350 (?crop=300,350,x22p,y5p), поэтому Обрезка выделит такой фрагмент на картинке.

Image stack. Обрезать области изображения

2. Вы также указали, где начать обрезку (?crop=300,350,x22p,y5p) — отступить 22% от исходной ширины, считая от левого края, и отступить 5% от исходной высоты, считая от верхнего края. Операция сместит обрезаемый фрагмент так, чтобы его верхний левый угол совпал с указанной точкой.

Image stack. Обрезать области изображения

3. Обрезка вырежет фрагмент. Итоговая картинка получится такой:

Image stack. Обрезать области изображения

• Указать место с помощью соотношений обрезаемых областей

Параметр?crop=220,100,offset-x40,offset-y58

Где:

  • 220 — высота вырезаемого фрагмента

  • 100 — ширина вырезаемого фрагмента

  • 40 — сколько процентов от общей ширины обрезаемой области должно находиться слева от фрагмента

  • 58 — сколько процентов от общей высоты обрезаемой области должно находиться сверху от фрагмента

Как работает: операция разместит фрагмент так, чтобы слева и сверху оказались области того размера, который вы задали. Затем вырежет фрагмент.

Пример: на сервере-источнике хранится картинка 500×600; вы хотите вырезать из неё фрагмент размером 220×100, чтобы оставить только ошейник собаки.

Чтобы обрезать картинку, вы добавляете в ссылку параметр запроса:

img.jpg?crop=220,100,offset-x40,offset-y58

Вот какие действия произойдут с картинкой перед тем, как CDN доставит её пользователю:

1. Вы указали размер фрагмента — 220×100 (crop=220,100,offset-x40,offset-y58). Обрезка выделит фрагмент такого размера на картинке.

Image stack. Обрезать области изображения

2. Обрезка переместит фрагмент вправо так, чтобы слева осталось 40% от области, которую нужно отрезать по ширине (crop=220,100,offset-x40,offset-y58). Соответственно, справа останется 60% области для обрезки.

Image stack. Обрезать области изображения

3. Переместит фрагмент вниз так, чтобы сверху осталось 58% от области, которую нужно отрезать (crop=220,100,offset-x40,offset-y58). Снизу, соответственно, останется 42% обрезаемого пространства.

Image stack. Обрезать области изображения

4. Вырежет фрагмент. Итоговая картинка получится такой:

Image stack. Обрезать области изображения

• Указать место с помощью одного отступа, измеренного в пикселях, и одной координаты, измеренной в процентах от исходного изображения

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

Примеры комбинированных параметров запроса:

  • ?crop=ширина,высота,x(значение по оси х),offset-y(процент обрезки сверху)

  • ?crop=ширина,высота,offset-x(процент обрезки слева),у(значение по оси у)

  • ?crop=ширина,высота,x(% обрезки по оси х),offset-у(процент обрезки сверху)

Обрезка сработает так, как описано выше.

Проверить, применилась ли обрезка, можно по значению HTTP-заголовка изображения X-img-operations. В нём отображаются все выполненные преобразования. Если в строке стоит значение crop — изображение было обрезано.

Image stack. Обрезать области изображения

Если значения crop в заголовке нет, и из кеша CDN отдаётся исходное изображение без обрезки, проверьте HTTP-заголовок Img-Skip-Reason. Там указывается причина, по которой операция не смогла быть выполнена.

Image stack. Обрезать области изображения

Мы используем cookie, чтобы сайт стал лучше для вас.