Reemake Digital Agency · Компонент RM VK Sender

Автоматическая конвертация WebP, PNG, BMP в JPEG при отправке в ВК

ВКонтакте не читает WebP, PNG с прозрачностью и BMP. Разбираем, как RM VK Sender конвертирует любые картинки в JPEG автоматически — без ручной подготовки файлов. С алгоритмом, кодом и обходом проблемы прозрачности.

Форматы

Что конвертируется в JPEG

WebP

Формат Google. Лёгкий, качественный. ВК через API не читает — конвертируется в JPEG.

PNG с прозрачностью

Прозрачность ВК превращает в чёрный фон. Компонент заливает белым перед конвертацией.

GIF

Анимация превращается в первый кадр. Статичный JPEG лучше, чем сломанная картинка.

BMP

Устаревший формат. Конвертация в JPEG сокращает размер в 10–20 раз.

Алгоритм

Как работает конвертация

1. Скачивание файла из тела статьи через cURL с таймаутом 10 секунд.

2. Определение формата через getimagesize() — WebP, PNG, GIF, BMP, JPEG.

3. Создание GD-ресурса: imagecreatefromwebp(), imagecreatefrompng(), imagecreatefromgif(), imagecreatefrombmp().

4. Заливка белым фоном — для PNG с прозрачностью.

5. Сохранение через imagejpeg() с качеством 90.

6. Загрузка в ВК через photos.getWallUploadServer и photos.saveWallPhoto.

Код

Обработка прозрачности PNG

$image = imagecreatefrompng($path);
$w = imagesx($image);
$h = imagesy($image);

// Заливка белым фоном
$jpeg = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($jpeg, 255, 255, 255);
imagefill($jpeg, 0, 0, $white);

// Копирование PNG поверх белого
imagecopy($jpeg, $image, 0, 0, 0, 0, $w, $h);
imagejpeg($jpeg, $out, 90);

Ключевое — imagefill() с белым цветом до imagecopy(). Без этого прозрачные области PNG превращаются в чёрные пятна в ВК. Это самая частая ошибка при самостоятельной конвертации.

Кейс · Симметрия

Мебельная компания: 500 PNG без чёрных пятен

Задача: «Симметрия» — мебельная компания из Перми. Все фото интерьеров — в PNG с прозрачностью. Через RSS-импорт ВК превращал прозрачность в чёрные пятна — выглядело как глюк, вовлечённость падала.

Что сделали: установили RM VK Sender с корректной обработкой прозрачности. Компонент заливает PNG белым фоном перед конвертацией в JPEG. Плюс — конвертирует WebP — современный формат, который Joomla использует для превью.

Результат: 500+ постов с PNG — без единого чёрного пятна. Фото выглядят так, как задумано. Вовлечённость группы выросла на 32 % за 2 месяца. Редакция перестала переделывать фото вручную в Photoshop.

Требования к хостингу

Что должно быть включено на сервере

1. GD с поддержкой WebP. Проверьте через phpinfo() — в разделе gd должно быть «WebP Support: enabled».

2. GD с поддержкой PNG, GIF, BMP. Обычно включены по умолчанию. Если нет — попросите хостинг включить.

3. cURL. Для скачивания картинок из тела статьи. Работает на 99 % хостингов.

4. Права на запись в /tmp. Временная папка должна быть доступна. Обычно уже включена.

Вопросы и ответы

Частые вопросы

Теряется ли качество?
Практически нет. JPEG с качеством 90 неотличим от оригинала при просмотре на мониторе или в ленте ВК на смартфоне.

Что если GD без WebP?
Компонент выдаст ошибку в логе. Включите WebP-поддержку в настройках PHP хостинга. Обычно это делается через панель управления за 5 минут.

Почему JPEG, а не PNG на выходе?
JPEG легче — ВК быстрее принимает файл. Для картинок без прозрачности это оптимальный формат. Если картинка изначально с прозрачностью — она тоже теряет смысл в PNG после заливки белым.

Что если картинка — AVIF?
AVIF в GD поддерживается реже. Если у вас много AVIF, обсудим отдельно — есть решения через ImageMagick или сторонние библиотеки.

Хотите автоматическую конвертацию?

Установим RM VK Sender. Проверим на ваших форматах картинок — WebP, PNG, GIF, BMP.

Обсудить задачу →
8 (950) 442-49-00 reemake@inbox.ru Max Messenger Max

с 8:00 до 20:00 (МСК)

г. Пермь