Преобразование Формата Изображения В PHP (WEBP JPG PNG GIF)

Добро пожаловать в учебник о том, как преобразовать формат файла изображения в PHP — из JPG в WEBP, из PNG в JPG, из PNG в WEBP и во что угодно еще.
Чтобы преобразовать JPG в WEBP в PHP:
• Откройте исходное изображение -$img = imagecreatefromjpeg("IMG.JPG");
• Установите цветовую палитру –imagepalettetotruecolor($img);
• Конвертируйте и сохраните изображение –imagewebp($img, "IMG.WEBP");
Вот и все, 3 строчки кода. Чтобы преобразовать другие форматы файлов, просто откройте/сохраните изображение, используя соответствующие функции –
• imagecreatefromjpeg() imagejpeg()
• imagecreatefrompng() imagepng()
• imagecreatefromgif() imagegif()
• imagecreatefromwebp() imagewebp()
• imagecreatefrombmp() imagebmp()
Это охватывает основы, но читайте дальше, чтобы увидеть больше примеров!
• Убедитесь, что extension = gdон включен в php.ini.

1) МАССОВОЕ КОНВЕРТИРОВАНИЕ ВСЕЙ ПАПКИ

1-mass-convert.php

<?php
// (A) НАСТРОЙКИ
$dir = __DIR__ . DIRECTORY_SEPARATOR . "images" . DIRECTORY_SEPARATOR;
$convert = "*.{bmp,jpg,png,gif}"; // в фигурных скобках, типы изображений для преобразования
$valid = ["bmp", "jpg", "jpeg", "png", "gif", "webp"];
// (B) ПРЕОБРАЗОВАТЬ ФАЙЛЫ ИЗОБРАЖЕНИЙ В WEBP
foreach (glob("$dir$convert", GLOB_BRACE) as $file) {
// (B1) ПРОВЕРИТЬ ДЕЙСТВИТЕЛЬНОЕ ИЗОБРАЖЕНИЕ
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if (!in_array($ext, $valid)) { continue; }

// (B2) ИМЯ ФАЙЛА "СОХРАНИТЬ КАК"
$name = pathinfo($file, PATHINFO_FILENAME);
$saveas = "$name.webp";
// не переопределять существующие - удалите это, чтобы переопределить
if (file_exists("$dir$saveas")) { continue; }
// (B3) КОНВЕРТИРОВАТЬ ИЗОБРАЖЕНИЕ
if ($ext=="jpg") { $ext = "jpeg"; }
$fn = "imagecreatefrom$ext";
$img = $fn($file);
imagepalettetotruecolor($img);
imagewebp($img, "$dir$saveas", 70);
imagedestroy($img);
// unlink($file); // удали оригинал если хочешь
echo "$dir$saveas - OK";
}

В этом примере сканируется папка images на наличие всех bmp, jpg, jpeg, png, gif файлов и преобразуется в файлы webp.
A. Целевая папка, файлы для преобразования и список допустимых изображений.
B. Извлекает список изображений и конвертирует их.
• (B1) Некоторые могут подумать, что «проверка допустимого изображения» не имеет значения, но я считаю, что PHP GD поддерживает только определенные типы изображений, $valid необходима проверка поддерживаемых изображений.
• (B2) Имя файла «Сохранить как». Да, снимите этот file_exists() флажок, если вы хотите переопределить ранее преобразованные файлы.
• (B3) Как во введении – Откройте изображение, сохраните как webp.

2) ЗАГРУЗИТЬ И КОНВЕРТИРОВАТЬ

2A) ФОРМА ЗАГРУЗКИ HTML

2a-upload-convert.html

<form action="2b-upload-convert.php" enctype="multipart/form-data" method="post" target="_blank">
<input type="file" name="up" required accept=".jpg,.jpeg,.png,.gif,.bmp">
<input type="submit" value="Конвертировать">
</form>

Это простая форма загрузки файлов.

2B) PHP ПРЕОБРАЗОВАТЬ ЗАГРУЖЕННЫЙ ФАЙЛ ИЗОБРАЖЕНИЯ

2b-upload-convert.php

<?php
// (A) НАСТРОЙКИ И ПЕРЕМЕННЫЕ
$valid = ["bmp", "jpg", "jpeg", "png", "gif", "webp"];
$dir = __DIR__ . DIRECTORY_SEPARATOR . "images" . DIRECTORY_SEPARATOR;
$name = pathinfo($_FILES["up"]["name"], PATHINFO_FILENAME);
$ext = strtolower(pathinfo($_FILES["up"]["name"], PATHINFO_EXTENSION));
$saveto = $dir . $_FILES["up"]["name"];
if ($ext != "webp") { $saveas = "$dir$name.webp"; }
// (B) ПЕРЕМЕСТИТЬ ЗАГРУЖЕННЫЙ ФАЙЛ В ПАПКУ ИЗОБРАЖЕНИЙ - ТОЛЬКО ЕСЛИ ДЕЙСТВИТЕЛЬНЫЙ ФОРМАТ
if (!in_array($ext, $valid)) { exit("INVALID IMAGE"); }
move_uploaded_file(
$_FILES["up"]["tmp_name"],
$dir . $_FILES["up"]["name"]
);
// (C) КОНВЕРТИРОВАТЬ, ЕСЛИ НЕОБХОДИМО
if ($ext != "webp") {
if ($ext=="jpg") { $ext = "jpeg"; }
$fn = "imagecreatefrom$ext";
$img = $fn($saveto);
imagepalettetotruecolor($img);
imagewebp($img, $saveas, 70);
imagedestroy($img);
// unlink($dir . $_FILES["up"]["name"]); // удалите оригинал, если хотите
}
// (D) ЧТО ДАЛЬШЕ?
// ПЕРЕНАПРАВИТЬ НА ДРУГУЮ СТРАНИЦУ?
// ПОКАЗАТЬ СТРАНИЦУ "ЗАГРУЗИТЬ ОК"?
// ПРОСТОЕ СООБЩЕНИЕ?
echo "OK";

Не пугайтесь… Здесь мы делаем примерно то же самое «открыть изображение и сохранить», но только с загруженным файлом.
A. Настройки — Куда сохранить загруженный файл, каково имя загруженного файла, расширение и т. д.
B. Переместите загруженный файл, только если это допустимое изображение.
C. Преобразуйте изображение, если это не webp. Практически то же самое, что и вступительный фрагмент.
D. Что делать после конвертации.

Вы можете скачать готовый скрипт.
Скачать

Обсуждение закрыто.