Дата: 2025-11-14
Проект: pirotehnika-opencart
Сервер: kondurov.beget.tech
✅ Конвертировано изображений: 290 PNG → JPEG
- Качество: 85%
- Белый фон (удалена прозрачность)
- Без ошибок
✅ Обновлено путей в БД: 3,680
- Товары (oc_product): 3,629
- Дополнительные изображения (oc_product_image): 51
- Категории (oc_category): 0
✅ Создана заглушка: no_image.jpg
- Размер: 500x500px
- Текст: "No Image"
До конвертации:
- Размер: ~1.1 GB
- Файлов PNG: 290
- Файлов JPEG: ~3,700
После конвертации:
- Размер: 837 MB ⬇️ -263 MB (24% экономия)
- Файлов PNG: 0
- Файлов JPEG: 3,974
tar -xzf import_files_backup_quality85_2025-11-14.tar.gz -C /tmp/image_restore/
Результат:
- Распаковано: 3,596 файлов из backup
- Место: /tmp/image_restore/
Создан PHP скрипт для проверки:
- Проверено: 4,293 файла
- Сломанных: 0
- Вывод: Все файлы в порядке!
Команда ImageMagick:
convert input.png -background white -alpha remove -alpha off -quality 85 output.jpg
Процесс:
- Автоматическая обработка всех PNG
- Удаление прозрачности (alpha channel)
- Белый фон
- Качество JPEG: 85%
- Удаление оригинальных PNG после конвертации
Результат:
- ✅ Конвертировано: 290 файлов
- ❌ Ошибок: 0
SQL запросы:
-- Товары
UPDATE oc_product
SET image = REPLACE(image, '.png', '.jpg')
WHERE image LIKE '%.png';
-- Дополнительные изображения
UPDATE oc_product_image
SET image = REPLACE(image, '.png', '.jpg')
WHERE image LIKE '%.png';
-- Категории
UPDATE oc_category
SET image = REPLACE(image, '.png', '.jpg')
WHERE image LIKE '%.png';
Результат:
- Обновлено: 3,680 записей
rm -rf ~/pirotehnika.spb.ru/public_html/system/storage/cache/*
rm -rf ~/pirotehnika.spb.ru/public_html/image/cache/*
Результат:
- ✅ Кэш OpenCart очищен
- ✅ Кэш изображений очищен
convert -size 500x500 xc:white -gravity center -pointsize 40 -fill gray -annotate +0+0 'No Image' no_image.jpg
Результат:
- ✅ Создан no_image.jpg (для товаров без изображений)
image/
├── catalog/ # 26 MB (демо файлы)
├── cache/ # 0 KB (очищен)
├── import_files/ # 837 MB, 3,974 JPEG файлов ✅
│ ├── 03/
│ ├── 04/
│ ├── ...
│ └── ff/
├── payment/
├── no_image.jpg # Заглушка ✅
└── import_files_backup_quality85_2025-11-14.tar.gz # 4.9 GB backup
-- Товары с изображениями
SELECT COUNT(*) FROM oc_product WHERE image != '' AND image != 'no_image.jpg';
-- Результат: 1,363
-- Товары с no_image.jpg (без изображений)
SELECT COUNT(*) FROM oc_product WHERE image = 'no_image.jpg';
-- Результат: 3,412
-- Дополнительные изображения
SELECT COUNT(*) FROM oc_product_image;
-- Результат: ~50+
Создан PHP скрипт:
<?php
$db = new mysqli("localhost", "kondurov_pspb", "7Dl*9Gh2", "kondurov_pspb");
$base_path = "/home/k/kondurov/pirotehnika.spb.ru/public_html/image/";
$res = $db->query("SELECT image FROM oc_product WHERE image != '' AND image != 'no_image.jpg'");
$missing = 0;
while($row = $res->fetch_assoc()) {
if (!file_exists($base_path . $row["image"])) {
$missing++;
}
}
echo "Битых ссылок: $missing\n";
Результат: ✅ 0 битых ссылок (кроме no_image.jpg)
/tmp/find_broken_images.php
- Проверка целостности изображений
- Поиск пустых/битых файлов
/tmp/convert_png_to_jpg.php
- Конвертация PNG → JPEG
- Удаление оригиналов после конвертации
/tmp/update_db_paths.php
- Обновление путей в БД
- 3 таблицы: product, product_image, category
/tmp/find_all_missing.php
- Проверка отсутствующих файлов
- Сравнение БД с файловой системой
Статус: Временные скрипты можно удалить
import_files_backup_quality85_2025-11-14.tar.gz
- Размер: 4.9 GB
- Содержит: 3,596 оригинальных изображений (PNG + JPEG)
- Расположение: ~/pirotehnika.spb.ru/public_html/image/
- Статус: ✅ СОХРАНЁН (не удалять!)
Рекомендации:
- ✅ НЕ удалять backup минимум 1 месяц
- ✅ Проверить отображение товаров на сайте
- ⚠️ После проверки можно переместить в ~/backups/
3,412 товаров с no_image.jpg:
SELECT p.product_id, p.model, pd.name
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE p.image = 'no_image.jpg'
ORDER BY p.product_id
LIMIT 100;
Рекомендации:
1. Экспортировать список товаров
2. Подготовить изображения
3. Массовая загрузка через админку OpenCart
Если нужна дополнительная оптимизация:
WebP формат:
bash
# Конвертация JPEG → WebP (ещё меньше размер)
cwebp -q 85 input.jpg -o output.webp
Lazy loading:
- Включить в настройках темы OpenCart
- Изображения загружаются по мере прокрутки
CDN:
- Настроить CloudFlare для статики
- Ускорение загрузки по всему миру
ImageMagick:
- Версия: установлен в /usr/local/bin/convert
- Используемые флаги:
- -background white - белый фон
- -alpha remove - удалить альфа канал
- -alpha off - отключить прозрачность
- -quality 85 - качество JPEG 85%
PHP:
- Версия: 7.4+ (Beget default)
- MySQLi для работы с БД
- Функции: getimagesize(), file_exists(), filesize()
MySQL:
- База: kondurov_pspb
- Таблицы: oc_product, oc_product_image, oc_category
- UPDATE с REPLACE для массового обновления
Пути:
- Корень: /home/k/kondurov/pirotehnika.spb.ru/public_html/
- Изображения: image/import_files/
- Структура: подпапки по hex (03/, 04/, ..., ff/)
- Формат имён: UUID_UUID.jpg
| Метрика | До | После | Изменение |
|---|---|---|---|
| Размер папки | 1.1 GB | 837 MB | -24% ⬇️ |
| PNG файлов | 290 | 0 | -100% ⬇️ |
| JPEG файлов | ~3,700 | 3,974 | +274 ⬆️ |
| Битых ссылок | 90 | 0 | -100% ✅ |
| Обновлено БД | - | 3,680 | ✅ |
| Кэш | ~100 MB | 0 MB | Очищен ✅ |
Отчёт создан: 2025-11-14
Автор: Claude Code Workspace
Статус: ✅ Работа завершена успешно