Подготовка фотографий товаров для Битрикс — оптимизация и загрузка

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Подготовка фотографий товаров для Битрикс — оптимизация и загрузка
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1360
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    948
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    694
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    832
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    732
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1075

Сырые фотографии не загружаются в Битрикс так, как вышли с камеры. Загрузка 6-мегабайтных JPEG-файлов напрямую в /upload/ не только замедляет сайт, но и засоряет базу данных записями в b_file, а страницы каталога грузятся по 10 секунд. Часто клиенты сталкиваются с таймаутами при массовой загрузке, превышением лимитов PHP memory_limit и генерацией ресайзов в реальном времени, что убивает производительность. Мы помогаем избежать этого. Наши сертифицированные специалисты по Битрикс с 10+ летним опытом (более 50 успешных проектов по подготовке фото для крупных каталогов) готовят фотографии под ключ: правильный размер, формат, структуру папок и автоматизированную загрузку. Оценим ваш проект бесплатно — просто свяжитесь с нами.

Почему подготовка фотографий перед загрузкой в Битрикс критична для производительности?

Битрикс хранит изображения в таблице b_file (метаданные) и физически в /upload/. При загрузке через административный интерфейс или API Битрикс автоматически создаёт уменьшенные версии (/upload/resize_cache/) по параметрам компонентов. Чем тяжелее исходник, тем дольше конвертация и больше нагрузка на диск.

Оптимальные параметры исходников:

Параметр Значение
Максимальный размер по длинной стороне 2000–2400 пикселей
Формат JPEG (основной), PNG для прозрачности
Качество JPEG 80–85%
Цветовой профиль sRGB (не AdobeRGB — браузеры не умеют его корректно отображать)
Максимальный размер файла 500 КБ для карточки, 200 КБ для превью
DPI 72–96 (веб, не печать)

Битрикс при выводе через bitrix:catalog.element перемасштабирует изображение до размеров, заданных в параметрах (DETAIL_IMAGE_SIZE). Загружать файлы больше 2400px бессмысленно — Битрикс всё равно создаст уменьшенную версию, а исходник займёт место на диске и в базе. Кроме того, тяжелые изображения ухудшают Core Web Vitals (LCP), что негативно сказывается на SEO-позициях. Экономия на хостинге при правильной подготовке может достигать 30% за счёт снижения трафика и нагрузки на диск.

Как автоматизировать массовую загрузку фото в Битрикс?

Автоматизация начинается с правильной структуры именования файлов. До загрузки файлы должны быть переименованы по единому стандарту. Битрикс хранит оригинальное имя файла в b_file.ORIGINAL_NAME, но по артикулу в имени можно восстановить связи.

Рекомендуемая схема: {артикул}_{порядковый номер}.jpg. Примеры:

  • grohe-33265002_1.jpg — главное фото
  • grohe-33265002_2.jpg — фото сбоку
  • grohe-33265002_3.jpg — фото деталей
  • grohe-33265002_4.jpg — фото в интерьере

Пошаговая инструкция по автоматизации

  1. Подготовьте файлы: переименуйте по схеме артикул_номер.jpg.
  2. Обработайте изображения скриптом ImageMagick (см. ниже) для ресайза, конвертации в sRGB и удаления EXIF.
  3. Получите словарь артикулов и ID элементов инфоблока через CIBlockElement::GetList.
  4. Сопоставьте файлы с элементами по артикулу.
  5. Загрузите через API: CFile::MakeFileArray и CIBlockElement::Update.

Пакетная подготовка изображений

Автоматизация через 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%.*}"

    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

После подготовки файлов загружаем их в элементы инфоблока по артикулу:

$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;
    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);
    }
}

Какой формат выбрать: JPEG или WebP?

WebP даёт дополнительное сжатие до 30% без потери качества. Битрикс не генерирует WebP автоматически. Два подхода:

  1. На уровне nginx: модуль webp_rewrite конвертирует JPEG/PNG в WebP на лету, если браузер поддерживает форму. Конвертированные версии кешируются. Согласно документации 1С-Битрикс по кэшированию, это снижает трафик до 30%.
  2. Дублирующие свойства: отдельное свойство GALLERY_WEBP с WebP-версиями, шаблон выбирает формат через <picture>.

Экономия на дисковом пространстве и трафике позволяет сократить расходы на хостинг до 25–30%.

Что входит в работу

  • Обработка исходных фото (ресайз, sRGB, сжатие)
  • Переименование по артикулу
  • Загрузка в инфоблоки с привязкой к товарам
  • Настройка WebP (nginx или свойства)
  • Документация по процессу
  • Поддержка 1 месяц после сдачи

Сроки

Объём Сроки
до 100 товаров (1–3 фото) 1–2 рабочих дня
до 500 товаров до 1 недели
от 1000 товаров индивидуальный расчёт

Типичные ошибки при подготовке фотографий

  • Загрузка без переименования — потеря связи с товаром.
  • Использование PNG для фотографий — JPEG легче.
  • Игнорирование sRGB — цвета искажаются.
  • Отсутствие прогрессивного JPEG — медленная отрисовка.
  • Загрузка файлов больше 2400px без необходимости.

Гарантируем качественную подготовку и быструю загрузку. Оценим ваш проект бесплатно — закажите консультацию.

Разработка каталога 1С-Битрикс: как превратить фильтр за 4 секунды в мгновенный отклик

В интернет-магазине 80 000 товаров, умный фильтр на Битрикс тормозит — каждый клик по свойству превращается в 4-секундное ожидание. Покупатель тыкает чекбокс «бренд Apple», смотрит на вертящийся лоадер и уходит к конкурентам. Конверсия падает на 20%. Это знакомая боль. Мы занимаемся разработкой каталога 1С-Битрикс и фильтрации: проектируем архитектуру, которая держит полмиллиона позиций без деградации — за счёт фасетных индексов, правильного выбора хранилищ и тегированного кэширования. Если ваш магазин теряет деньги на медленном фильтре — закажите аудит текущей архитектуры, мы оценим проблему за один день.

Как инфоблоки влияют на производительность каталога?

Инфоблоки — основа каталога, но на проектах с десятками тысяч товаров они становятся узким местом. Стандартный bitrix:catalog.smart.filter генерирует JOIN на 6–8 таблиц свойств (b_iblock_element_property), и MySQL уходит в full scan. Меняем подход: на этапе проектирования определяем, какие свойства пойдут в инфоблок, а какие — в Highload-блоки. Для справочных данных (бренды, города, размерные сетки) используем HLB: они работают с отдельной таблицей без overhead b_iblock_element_property. Когда выпадающий список «Города» грузится 8 секунд из-за 5000 значений — это сигнал переносить их на HLB. Каталог на 80 000 товаров с фильтром за 4 секунды теряет около 1,2 млн рублей в год из-за ухода клиентов — такую экономию даёт правильная архитектура. Свяжитесь с нами, чтобы прикинуть выгоду для вашего проекта.

Что такое фасетный индекс и почему он важен?

Основная производительность кроется здесь. Без фасетного индекса каждый клик по фильтру — SQL-запрос с JOIN по b_iblock_element, b_iblock_element_property, b_catalog_price и ещё паре таблиц. На 100 000 товаров такой запрос выполняется 2–4 секунды. С фасетным индексом — 30–80 мс. Согласно официальной документации, фасетный индекс сокращает время выполнения запроса в десятки раз (в реальных проектах — до 50 раз). Механизм: 1С-Битрикс создаёт таблицу b_catalog_smart_filter, куда складывает предрассчитанные комбинации «раздел + свойство + значение + количество товаров». При фильтрации движок обращается к этой плоской таблице вместо сбора данных из нормализованной структуры инфоблоков.

При настройке фасетного индекса часто допускают одни и те же промахи. Индекс создают не для всех разделов, забывают настроить фоновую переиндексацию после массового импорта — тогда счётчики свойств перестают соответствовать реальному количеству товаров. Включают в фасет все свойства подряд, даже служебные, что раздувает таблицу b_catalog_smart_filter. На каталогах свыше 300 тысяч позиций её размер может превышать гигабайт — без мониторинга через SHOW TABLE STATUS LIKE 'b_catalog_smart_filter' не обойтись. Вывод: фасетный индекс даёт радикальное ускорение, но требует вдумчивой настройки и автоматической переиндексации через агент CIBlockCatalog::ReindexFacet или cron.

Почему Highload-блоки быстрее инфоблоков для справочников?

Критерий Инфоблок (IB) Highload-блок (HLB)
Хранение свойств Таблица b_iblock_element_property Отдельная плоская таблица на каждый HLB
Скорость фильтрации на 50 тыс. товаров ~500–800 мс (с фасетом) ~80–150 мс (без фасета)
Поддержка SEO (URL, шаблоны) Полная Отсутствует (только справочники)
Рекомендуется для Товары, разделы, основные свойства Справочники (бренды, города), пользовательские данные
Когда инфоблоки предпочтительнее HLBHighload-блоки не формируют SEO-URL и не имеют визуального редактора. Если справочник должен иметь отдельные страницы (например, бренды с уникальными H1), используйте инфоблоки. HLB — для сугубо служебных данных, не требующих индексации.

На практике лучшая архитектура — гибридная. Товары и разделы живут в инфоблоках — там SEO, визуальный редактор, штатные компоненты каталога. А справочные свойства с тысячами значений переносим в Highload-блоки. Пользовательские данные (избранное, просмотренные, сравнение) — тоже в HLB, они быстро растут, и инфоблоки под это не заточены. Хотите узнать, какую архитектуру выбрать для вашего каталога? Свяжитесь с нами — проанализируем структуру данных и дадим рекомендации.

SEO-фильтры: как получить ЧПУ и не попасть под фильтр Яндекса?

Стандартный фильтр генерирует ?filter[brand]=apple&filter[color]=black — поисковики такие URL либо не индексируют, либо считают дублями. А запрос «ноутбуки apple чёрные» — самый конверсионный низкочастотный трафик. Делаем ЧПУ: /catalog/noutbuki/brand-apple/color-black/ с уникальными title, description и H1. Не шаблонными «Купить {бренд} в Минске», а осмысленными — с учётом конкретной комбинации.

  • Канонические URL — чтобы /brand-apple/color-black/ и /color-black/brand-apple/ не дублировались.
  • Контроль количества индексируемых комбинаций — 10 свойств по 20 значений дают миллионы страниц, Яндекс за такое бьёт фильтром.
  • Автоматическая sitemap для SEO-страниц фильтрации.
  • Административный интерфейс для менеджера — он сам решает, какие пересечения индексировать.

Закажите внедрение SEO-фильтров — получите готовый инструмент для привлечения низкочастотного трафика с ростом конверсии до 30%.

Какие методы дают ощутимый прирост производительности?

  • Выборка только нужных полей через arSelect — никаких SELECT * по инфоблокам.
  • Управляемый кэш с тегами: добавили товар — кэш пересоздался автоматически.
  • Композитный кэш для анонимов: TTFB < 100 мс, HTML отдаётся без запуска PHP.
  • Индексы на свойствах, участвующих в фильтрации — без них MySQL сканирует b_iblock_element_property целиком.
  • Мониторинг TTFB: если каталог отвечает дольше 500 мс — лезем в slow query log.

Что входит в комплексную разработку каталога на 1С-Битрикс

Мы передаём не просто работающий код, а полный комплект документации и инструментов для самостоятельного управления. В deliverables входят:

  • Аудит текущей архитектуры каталога и фильтрации.
  • Проектная документация с описанием схемы данных, распределения по инфоблокам и Highload-блокам, фасетного состава.
  • Готовый умный фильтр с ajax-режимом, группировкой и сохранением состояния.
  • Настроенный фасетный индекс с cron-переиндексацией.
  • SEO-фильтры с ЧПУ, уникальными метатегами, каноникалами и sitemap.
  • Интеграция быстрого просмотра и сортировок (AJAX, мобильная адаптация).
  • Документация по эксплуатации для менеджеров: как добавлять свойства, управлять индексами и SEO-комбинациями.
  • Гарантийная поддержка 30 дней после сдачи — исправляем инциденты и отвечаем на вопросы.

Как мы разрабатываем каталог: пошаговый план

Мы не просто ставим компоненты. Процесс включает:

  1. Аудит текущего каталога — разбор структуры свойств, выявление узких мест, проверка индексов и кэша.
  2. Проектирование архитектуры — распределение данных между инфоблоками и HLB, определение фасетного состава.
  3. Разработка умного фильтра — кастомизация шаблона, ajax-режим, группировка, сохранение состояния.
  4. Настройка фасетного индекса — создание, cron-переиндексация, мониторинг.
  5. SEO-фильтры — ЧПУ, метатеги, каноникалы, sitemap.
  6. Интеграция быстрого просмотра и сортировок — AJAX-модалка с фото, ценой, наличием, предзагрузка при наведении. На мобильных — bottom sheet вместо попапа.
  7. Обучение менеджеров — как управлять свойствами, индексами и SEO-комбинациями.
  8. Гарантийная поддержка — 30 дней после сдачи.

Сроки реализации

Задача Ориентировочный срок
Настройка умного фильтра 3–5 дней
Фасетный поиск 2–3 дня
SEO-фильтры 1–2 недели
Быстрый просмотр 3–5 дней
Кастомный шаблон каталога 1–2 недели
Миграция на Highload-блоки 2–4 недели
Комплексная разработка каталога 4–8 недель

Каталог окупается через рост конверсии и приток SEO-трафика по низкочастотке. Покупатель находит товар за два клика, а не уходит после первого тычка в фильтр. Получите консультацию — оценим ваш проект в течение дня и предоставим расчёт стоимости с roadmap работ по разработке каталога 1С-Битрикс. Свяжитесь с нами через форму на сайте — сертифицированные специалисты и более 200 успешных проектов за плечами.