Підготовка фотографій товарів для 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 дні |







