изображений | Contentful
Введение
Contentful Images API позволяет извлекать и обрабатывать файлы изображений, на которые ссылаются активы.
Представление актива в формате JSON в Contentful выглядит следующим образом:
"поля": { "title": "Playsam Streamliner", "файл": { "fileName": "quwowooybuqbl6ntboz3.jpg", "contentType": "изображение/jpg", "подробности": { "изображение": { "ширина": 600, "высота": 446 }, "размер": 27187 }, "url": "//images.ctfassets.net/yadj1kx9rmg0/wtrHxeu3zEoEce2MokCSi/cf6f68efdcf625fdc060607df0f3baef/quwowooybuqbl6ntboz3.jpg" } }
В этом справочнике описаны параметры, которые можно добавить к URL-адресу, указанному в поле file.url
, для управления и преобразования изображений.
Чтобы загрузить изображения в Contentful, см. здесь.
Примечание: В соответствии с техническими ограничениями размер загружаемого изображения не должен превышать 20 МБ.
Базовая информация API
Ссылка
Извлечение
Изображение
Вы можете получить исходное изображение. URL тот же, что и в поле file.url актива.
Получить изображение
Изменение форматов
Формат изображения
Изображение можно преобразовать в другой формат.
Возможные значения:
jpg
png
паутина
GIF
авиф
По умолчанию используется исходный формат изображения.
Получить изображение
Прогрессивные JPEG
Вы можете запросить изображение JPEG как прогрессивный JPEG.
Прогрессивный формат JPEG сохраняет несколько проходов изображения с постепенно увеличивающейся детализацией.
Получить изображение
8-битный PNG
Вы можете запросить изображение PNG как 8-битный PNG.
8-битные изображения PNG поддерживают до 256 цветов и весят меньше, чем стандартный 24-битный эквивалент PNG. 8-битный формат PNG в основном используется для простых изображений, таких как значки или логотипы.
Получить изображение
AVIF
Для изображений, преобразованных в формат AVIF, применяются ограничения размера изображения, указанные в разделе «Технические ограничения». Кроме того, есть 9Мегапиксельное ограничение на размер исходного изображения. Ограничение применяется ко всем уровням обслуживания (см. Технические ограничения).
Изменение размера и обрезка
Укажите ширину и высоту
Вы можете изменить размер изображения до нужной ширины и высоты. Максимально допустимое значение составляет 4000
пикселей.
По умолчанию используется исходная ширина и высота изображения.
Получить изображение
Изменение поведения при изменении размера
По умолчанию размеры изображений изменяются в соответствии с указанными размерами.
Вы можете запросить другое поведение, используя соответствует параметру
.
Возможные значения:
pad
: Измените размер изображения до указанных размеров, при необходимости дополнив изображение.fill
: Измените размер изображения до указанных размеров, при необходимости обрезав изображение.масштаб
: Измените размер изображения до указанных размеров, при необходимости изменив исходное соотношение сторон.кадрирование
: Обрезка части исходного изображения до заданных размеров.thumb
: Создать миниатюру из изображения.
pad
поведение использует цвет фона в качестве цвета заполнения.
Получить изображение
Указать область фокусировки
Вы можете выбрать область фокусировки для изменения размера при использовании типа подгонки pad
, fill
, урожая
или большого пальца 9001 2 .
Область фокусировки не влияет на тип подгонки по умолчанию или шкалу
или
.
Возможные значения:
центр
,верх
правый
,левый
,нижний
.верхний_правый
,верхний_левый
,нижний_правый
,нижний_левый
.лицо
для самого большого обнаруженного лица.лиц
для всех обнаруженных лиц.
По умолчанию центр
.
Получить изображение
Обрезка закругленных углов и круга/эллипса
Вы можете добавить к изображению закругленные углы или обрезать до круга/эллипса.
Возможные значения:
По умолчанию 0
.
Закругленные углы используют цвет фона в качестве цвета заполнения,
если формат jpg
и поведение изменения размера pad
, то по умолчанию используется белый цвет.
Получить изображение
Обработка изображения
Качество
Вы можете изменить качество изображения, выраженное в процентах от 1
и 100
.
Значение качества игнорируется только для 8-битных PNG.
Получить изображение
Цвет фона
Вы можете выбрать цвет фона при использовании углового радиуса или типа подгонки площадки
. Он принимает значения RGB, такие как rgb:9090ff
Получить изображение
Удаление
Чтобы удалить изображение, см. документацию CMA по активам.
Представление изображений
Когда вы используете Sanity, у вас под рукой есть глобально распределенная CDN активов. В любое время вы можете запросить свое изображение в новом размере, с новым кадрированием или с чем угодно, и актив будет создан для вас и автоматически кэшируется рядом с вашими пользователями. Одна вещь, о которой следует помнить при реализации внешнего интерфейса, заключается в том, что для достижения максимальной производительности вы должны позаботиться о повторном использовании обрезки и размеров во внешнем интерфейсе, чтобы убедиться, что ваши кэшированные активы повторно используются
Прежде чем перейти к практическим деталям, давайте вспомним, как изображения обрабатываются в Sanity: Тип image
представляет изображение, используемое в качестве поля в документе или встроенное в текстовый блок. Он может содержать дополнительные поля, такие как подпись, кредитование и т. д., а также конкретную обрезку и точку доступа для этого изображения. Изображение
ссылается на актив
, который представляет фактические данные изображения, которые должны отображаться для этого изображения. (Один
на самом деле может совместно использоваться несколькими изображениями
, что позволяет редакторам повторно использовать ресурс с различными обрезками, надписями и т. д.)
Абсолютно самый простой способ представить изображения из Sanity — получить базовый URL-адрес изображения из объект. Допустим, у нас есть человек типа документа с изображением поля, мы можем получить базовый URL-адрес с помощью этого простого запроса:
*[_type == 'person']{ имя, "imageUrl": image.asset->url }
Здесь мы следуем по ссылке актив
из изображения и извлечь только URL-адрес.
{ имя: "Шон Ганн",imageUrl: "https://cdn.
sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg" }
Теперь мы можем добавить параметры URL-адреса к этому базовому URL-адресу, чтобы ограничить размер, обрезать изображение, размывать его или выполнять над ним другие операции. Некоторые примеры:
// Базовое изображение https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg // Размер изменен, чтобы иметь высоту 200 https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg?h=200 // Извлекаем прямоугольник из изображения (x, y, ширина, высота) https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg?rect=70,20,120,150 // Извлекаем прямоугольник из изображения (x, y, ширина, высота) и ограничиваем высоту до 64 https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg?rect=70,20,120,150&h=64 // Размытие изображения https://cdn.sanity.io/images/zp7mbokg/production/G3i4emG6B8JnTmGoN0UjgAp8-300x450.jpg?blur=50
Небольшие изображения масштабируются до указанной ширины или высоты. Чтобы избежать этого, используйте &fit=max
.
Полный список параметров см. в справочной документации по URL-адресу изображения.
Некоторые изображения могут быть обрезаны и иметь горячую точку. Это может быть включено в схеме. Если есть обрезание/горячая точка, это означает, что редактор использовал такой интерфейс:
Обрезка описывает, какую часть изображения редактор хочет разрешить использовать, в то время как горячая точка указывает, что он хочет сохранить, когда изображение необходимо дополнительно обрезать в интерфейсе.
Запись изображения с кадрированием и горячей точкой может выглядеть из API следующим образом:
{ _тип: "изображение", объект: { _ref: "изображение-G3i4emG6B8JnTmGoN0UjgAp8-300x450-jpg", _type: "ссылка" }, // Обрезка указывается в долях размера изображения // и измеряется от края изображения. Это изображение обрезано // снизу на 44% высоты изображения. Другие измерения // остаются нетронутыми. обрезать: { низ: 0,44, слева: 0, справа: 0, сверху: 0 }, // Позиция горячей точки x, y выражается в долях размера изображения. // Эта горячая точка расположена по центру на 43% ширины изображения слева, // 26% высоты изображения сверху. Ширина и высота есть // в той же системе единиц. Эта горячая точка имеет ширину 44% ширины изображения. // 65% высоты изображения в высоту, этот прямоугольник центрирован по осям x,y // задана координата. точка доступа: { высота: 0,44, ширина: 0,65, х: 0,43, у: 0,26 } }
Ответственность переднего плана заключается в соблюдении обрезки/горячих точек в соответствии с пожеланиями редактора, но для удобства мы предоставляем библиотеку JavaScript, которая позаботится об этом за вас.
Для проектов JavaScript мы предоставляем пакет @sanity/image-url
npm, который будет генерировать URL-адреса изображений для вас с учетом записи изображения, подобной приведенной выше. Вы можете указать дополнительные ограничения, такие как ширина и высота, и быть уверенными, что обрезка/горячая точка соблюдается там, где это применимо.
Давайте посмотрим, как этот пакет можно использовать с React для рендеринга изображений. (В нем нет ничего специфичного для React, вы можете использовать его с любым фреймворком)
Вы устанавливаете его в свой проект обычным способом:
npm install --save @sanity/image-url
Затем вам нужно настроить его с вашим идентификатором проекта и набором данных. Самый простой способ сделать это — инициализировать его с помощью клиента Sanity, который уже есть в вашем проекте. Для этого импортируйте его, используя правильный путь, как показано ниже. В примере у нас есть sanityClient.js
в корне нашего проекта, который, как предполагается, возвращает настроенный клиент (в комплекте с projectId
, dataset
и apiVersion
). Узнайте больше о клиенте в нашей документации по клиенту JavaScript.
импортировать React из «реагировать» импортировать клиента из './sanityClient' импортировать imageUrlBuilder из '@sanity/image-url' // Получите предварительно настроенный построитель URL-адресов от вашего здравомыслящего клиента const builder = imageUrlBuilder (клиент) // Затем мы хотели бы сделать простую функцию, подобную этой, которая дает // создаем изображение и возвращаем конструктор, чтобы вы могли указать дополнительные // параметры: URL-адрес функции (источник) { вернуть builder.image(источник) }
Теперь вы можете использовать этот удобный синтаксис конструктора для создания ваших URL-адресов:
Вы можете добавить дополнительные параметры, подобные этому :
Полный список параметров конструктора см. в справочной документации.
Для поддержки загрузки изображения с определенным именем файла во внешнем интерфейсе необходимо добавить параметр запроса dl=
к URL-адресу, например.