Автоматическая конвертация 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.
Обсудить задачу →




Messenger Max