Подготовка фотографий товаров для 1С-Битрикс
Сырые фотографии не загружаются в Битрикс в том виде, в котором они выходят с камеры или от поставщика. Нужна предобработка: правильный размер, правильный формат, правильная структура папок. Загрузка 6-мегабайтных RAW-конвертов напрямую в /upload/ убивает скорость сайта и засоряет базу данных записями в b_file.
Подготовка фотографий товаров для 1С-Битрикс
Технические требования к файлам для Битрикс
Битрикс хранит изображения в таблице b_file (метаданные) и физически в /upload/. При загрузке через административный интерфейс или API Битрикс автоматически создаёт уменьшенные версии (/upload/resize_cache/) по параметрам, заданным в компонентах.
Оптимальные параметры исходников для загрузки:
| Параметр | Значение |
|---|---|
| Максимальный размер по длинной стороне | 2000–2400 пикселей |
| Формат | JPEG (основной), PNG для товаров с прозрачностью |
| Качество JPEG | 80–85% |
| Цветовой профиль | sRGB (не AdobeRGB — браузеры не умеют его корректно отображать) |
| Максимальный размер файла | 500 KB для карточки, 200 KB для превью |
| DPI | 72–96 (веб, не печать) |
Битрикс при выводе через компонент bitrix:catalog.element перемасштабирует изображение до размеров, заданных в параметрах (DETAIL_IMAGE_SIZE). Загружать файлы больше 2400px бессмысленно — Битрикс всё равно создаст версию указанного размера, но исходник займёт место на диске и в базе.
Структура именования файлов
До загрузки в Битрикс файлы должны быть переименованы по единому стандарту. Битрикс хранит оригинальное имя файла в b_file.ORIGINAL_NAME. По именам файлов потом можно будет восстановить связи, найти нужные изображения.
Рекомендуемая схема именования:
{артикул}_{порядковый номер}.jpg
Примеры:
grohe-33265002_1.jpg <- главное фото
grohe-33265002_2.jpg <- фото сбоку
grohe-33265002_3.jpg <- фото деталей
grohe-33265002_4.jpg <- фото в интерьере
Пакетная подготовка изображений
Автоматизация через ImageMagick:
#!/bin/bash
# Подготовка папки с исходниками для загрузки в Битрикс
INPUT_DIR="./raw"
OUTPUT_DIR="./ready"
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.{jpg,jpeg,JPG,JPEG,png,PNG}; do
[ -f "$file" ] || continue
filename=$(basename "$file")
name="${filename%.*}"
# Ресайз, конвертация в sRGB, JPEG, оптимизация
convert "$file" \
-auto-orient \
-resize "2000x2000>" \
-colorspace sRGB \
-strip \
-quality 82 \
-interlace Plane \
"$OUTPUT_DIR/${name}.jpg"
echo "Processed: $filename"
done
Флаги:
-
-auto-orient— исправляет ориентацию по EXIF (важно для мобильных фото) -
-resize "2000x2000>"— уменьшает только если больше 2000px, не увеличивает -
-strip— убирает EXIF-метаданные (GPS-координаты, данные камеры) -
-interlace Plane— прогрессивный JPEG, быстрее воспринимается при загрузке
Массовая загрузка в Битрикс через API
После подготовки файлов — загрузка в элементы инфоблока по артикулу:
// Маппинг: артикул → ID элемента
$articleToId = [];
$res = \CIBlockElement::GetList(
[], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
false, false,
['ID', 'PROPERTY_ARTICLE']
);
while ($el = $res->Fetch()) {
if ($el['PROPERTY_ARTICLE_VALUE']) {
$articleToId[$el['PROPERTY_ARTICLE_VALUE']] = $el['ID'];
}
}
// Загрузка изображений из папки
$directory = new \DirectoryIterator('/path/to/ready/');
$grouped = []; // Группируем по артикулу
foreach ($directory as $file) {
if ($file->isDot() || $file->getExtension() !== 'jpg') continue;
// Парсим артикул из имени файла: "grohe-33265002_1.jpg"
preg_match('/^(.+)_(\d+)\.jpg$/', $file->getFilename(), $m);
if (!$m) continue;
[$, $article, $order] = $m;
$grouped[$article][(int)$order] = $file->getPathname();
}
foreach ($grouped as $article => $images) {
$elementId = $articleToId[$article] ?? null;
if (!$elementId) continue;
ksort($images);
$imageFiles = array_values($images);
$el = new \CIBlockElement();
$el->Update($elementId, [
'DETAIL_PICTURE' => \CFile::MakeFileArray($imageFiles[0]),
'PREVIEW_PICTURE' => \CFile::MakeFileArray($imageFiles[0]),
]);
// Галерея — свойство типа «Файл»
if (count($imageFiles) > 1) {
$gallery = array_map(
fn($path) => ['VALUE' => \CFile::MakeFileArray($path)],
array_slice($imageFiles, 1)
);
\CIBlockElement::SetPropertyValueCode($elementId, 'GALLERY', $gallery);
}
}
Форматы изображений: WebP
Битрикс не генерирует WebP автоматически. Для WebP-поддержки — два подхода:
-
На уровне nginx:
webp_rewriteмодуль конвертирует JPEG/PNG в WebP на лету, если браузер поддерживает формат. Конвертированные версии кешируются. -
Дублирующие свойства: отдельное свойство
GALLERY_WEBPс WebP-версиями, шаблон компонента выбирает формат через<picture>.
Сроки
| Объём | Сроки |
|---|---|
| Подготовка и загрузка фото для 100 товаров (1–3 фото на товар) | 1–2 рабочих дня |
| Подготовка и загрузка фото для 500 товаров | 1 неделя |
| Настройка pipeline автообработки для регулярных поставок | 1–2 дня |







