Изображения — самый тяжёлый по объёму элемент автонаполнения. 10 000 товаров × 5 фото = 50 000 файлов, которые нужно скачать, проверить, оптимизировать и правильно привязать к инфоблоку. При этом система должна работать в фоне, не нагружать сервер в пиковые часы и не дублировать уже загруженные фото. Мы решаем эту задачу под ключ: проектируем архитектуру загрузчика, настраиваем очереди и обеспечиваем полный цикл — от парсинга источника до финальной привязки к товару. Оценим ваш проект за один рабочий день и предложим решение без скрытых доработок. Ручная загрузка тысяч изображений занимает недели и стоит дорого; автоматизация позволяет сэкономить до 80% бюджета на наполнение каталога.
Источники изображений
API производителя — самый чистый вариант. Производители часто предоставляют медиа-библиотеки партнёрам: ZIP-архив с фото по артикулам или API для скачивания по EAN.
Icecat / Syndigo — база данных контента производителей. Платный доступ, но полностью легальный и с хорошим покрытием электроники и бытовой техники.
Сайт производителя — парсинг. Приоритет: находим теги <meta property="og:image"> или JSON-LD image — это часто ссылки на изображения в хорошем качестве без парсинга галереи.
YML-фид поставщика — тег <picture> содержит URL основного фото.
Как избежать дублирования изображений?
Храним кеш скачанных URL в Highload-блоке или таблице:
CREATE TABLE image_download_cache ( source_url TEXT PRIMARY KEY, file_id INT, downloaded_at TIMESTAMP ); Перед скачиванием проверяем кеш — если URL уже обрабатывался и файл существует, используем готовый file_id.
Валидация качества изображений
Не все найденные изображения пригодны. Обязательные проверки перед сохранением: разрешение не менее 400px, MIME-тип JPEG/PNG/WebP, размер файла от 10 КБ. Изображения с водяными знаками или битые отбрасываются. Пример кода:
$imageInfo = getimagesizefromstring($imageData); if ($imageInfo[0] < 400 || $imageInfo[1] < 400) return null; if (!in_array($imageInfo['mime'], ['image/jpeg', 'image/png', 'image/webp'])) return null; if (strlen($imageData) < 10_000) return null; Оптимизация изображений перед сохранением
Скачанные фото часто больше нужного (3000×3000px, 5 МБ). Перед сохранением в Битрикс:
- Ресайз до максимума 1500px по большей стороне (для detail_picture)
- Конвертация CMYK → RGB (типичная проблема с фото из полиграфических источников)
- Сжатие JPEG до quality 85
Используем Intervention Image:
$image = Image::make($imageData)->resize(1500, null, fn($c) => $c->aspectRatio()); $optimized = $image->encode('jpg', 85)->getEncoded(); Битрикс сам создаёт превью через свой resize-механизм (CFile::ResizeImageGet), но исходник лучше отдавать уже оптимизированным.
Фоновая обработка и очереди
50 000 изображений нельзя обработать за один запуск. Архитектура:
- Воркер 1: обходит инфоблок, находит элементы без изображений → добавляет в очередь
- Воркеры 2–5: параллельно скачивают и сохраняют изображения (4 потока)
- Расписание: воркеры работают ночью 02:00–06:00, чтобы не нагружать сервер днём
- Лимит на сессию: не более 1000 изображений за один запуск
Что входит в работу
| Этап | Описание | Срок |
|---|---|---|
| Анализ источников | Сбор документации, тестовые запросы к API, оценка объёмов | 1 день |
| Разработка загрузчика | Парсинг, валидация, оптимизация, сохранение в Битрикс | 2–3 дня |
| Система дедупликации | Кеширование URL, проверка существующих файлов | 4–8 часов |
| Очереди и параллельные воркеры | Настройка фоновых процессов, многопоточность | 1–2 дня |
| Привязка к инфоблоку | Превью, галерея, сортировка | 4–6 часов |
| Мониторинг и админка | Журнал загрузок, прогресс, повторная обработка ошибок | 1 день |
| Документация и обучение | Инструкция по эксплуатации, передача доступов | Включено |
Итого: 6–9 рабочих дней. Первичное наполнение 10 000 товаров при 4 потоках — около 3–4 часов. Стоимость рассчитывается индивидуально под ваш проект — пишите, оценим. Стоимость работ окупается в течение нескольких месяцев за счёт сокращения ручного труда.
Как ускорить загрузку каталога?
Используйте несколько потоков загрузки и кеширование. В нашей реализации мы применяем до 4 параллельных воркеров, что сокращает время обработки 10 000 товаров с 12 часов (последовательный режим) до 3–4 часов. Экономия времени очевидна — вы получаете готовый каталог за день, а не за неделю.
Почему стоит заказать автоматизацию?
Ручная загрузка изображений для тысяч товаров — это недели работы менеджера и высокая вероятность ошибок: перепутанные фото, неправильные разрешения, дубликаты. Автоматизация исключает человеческий фактор, а все операции проходят валидацию и логирование. Syndigo и Icecat — проверенные источники, но мы также поддерживаем интеграцию с любым REST API или YML-фидом. Получите консультацию — мы подготовим коммерческое предложение с детальным планом работ и сроками.







