Оптимизация изображений с помощью пакета artisansweb / image-optimizer
Вот уже 4 года я веду этот блог. Наряду с этим блогом я также веду канал на YouTube, где делюсь видео, в которых показано, как реализовать мои статьи.
Я верю в открытый исходный код. На моем веб-сайте у меня нет платного членства, я не продаю электронные книги или курсы. Мне нравится, когда ресурсы остаются свободными. Имея это в виду, я создал свой первый пакет GitHub artisansweb / image-optimizer, который выполняет задачу оптимизации изображений для вашего веб-сайта.
Раньше я писал несколько статей по оптимизации изображений. До сих пор TinyPNG был моим любимым и до сих пор остается. Но ограничение TinyPNG в том, что они позволяют оптимизировать 500 бесплатных изображений в месяц. Выше 500 изображений взимается плата за изображение.
Несколько из предыдущих статей по оптимизации изображений:
Есть и другие пакеты, но они требуют, чтобы мы установили на нашу машину такое программное обеспечение, как JpegOptim, Optipng и т.д. Это тоже неосуществимое решение.
В прошлом году я работал над клиентским проектом, в котором нужно сжать тысячи изображений. Мы искали эффективный сервис с открытым исходным кодом, который справился бы с нашей работой. Затем мы узнали о reSmush.it, который является полностью бесплатным сервисом для оптимизации изображений.
Хотя я написал статью о reSmush.it, я чувствую, что могу создать из нее пакет GitHub, и я это сделал. Если вы прочитаете мою статью о reSmush.it, вы обнаружите, что нужно добавить около 25-30 строк кода. Но если вы идете за пакетом, это можно сделать в 5-6 строках.
При этом давайте обсудим, как установить и использовать artisansweb/image-optimizer
package.
Оптимизация изображений с помощью PHP
Сначала вам нужно установить пакет с помощью Composer, выполнив команду:
composer require artisansweb/image-optimizer
После установки пакета вы можете оптимизировать изображение, используя приведенный ниже код.
<?php
require_once "vendor/autoload.php";
use ArtisansWebOptimizer;
$img = new Optimizer();
$source = 'SOURCE_PATH_OF_IMAGE';
$img->optimize($source);
Здесь вам нужно передать полный путь к каталогу исходного изображения, и ваше исходное изображение будет оптимизировано автоматически. Иногда вам нужно сохранить исходное изображение и сохранить оптимизированную версию в другом каталоге. В этом случае вы можете использовать второй параметр для пункта назначения.
<?php
$source = 'SOURCE_PATH_OF_IMAGE';
$destination = 'DESTINATION_PATH_OF_IMAGE';
$img->optimize($source, $destination);
Используя приведенный выше код, вы можете оптимизировать изображения, которые находятся внутри вашего каталога. Однако я бы порекомендовал оптимизировать изображение при загрузке, чтобы вам не приходилось выполнять задачи оптимизации отдельно.
Пользователь может оптимизировать изображение при загрузке следующим образом.
<?php
require_once "vendor/autoload.php";
use ArtisansWebOptimizer;
if (isset($_POST['submit'])) {
$img = new Optimizer();
move_uploaded_file($_FILES['file']['tmp_name'], 'images/'.$_FILES['file']['name']);
$img->optimize('images/'.$_FILES['file']['name']);
}
?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="Submit" />
</form>
Хотя reSmush.it пока сжал миллиарды изображений, возможно, их сервис по какой-то причине не работает. Я обработал этот сценарий в пакете. По какой-то причине, если пакет не получает оптимизированную версию из reSmush.it, то в качестве запасного варианта он использует собственные методы PHP, такие как imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif, imagejpeg для оптимизации.
Есть несколько новых функций, которые я добавлю в пакет и скоро выпущу.
Буду рад, если вы воспользуетесь пакетом и дадите мне знать, как он работает, в разделе комментариев ниже. Поделитесь своими отзывами, чтобы мы вместе могли улучшить этот пакет, который поможет сообществу.