Оптимізація зображень за допомогою пакету artisansweb / image-optimizer
Вже 4 роки я веду цей блог. Разом із цим блогом я також веду канал YouTube, де ділюсь відео, де показано, як реалізувати мої статті.
Я вірю у відкрите джерело. На своєму веб-сайті я не платую за членство, не продаю електронні книги та курси. Я люблю залишати ресурси вільними. З огляду на це, я створив свій перший пакет GitHub artisansweb / оптимізатор зображень, який виконує завдання оптимізації зображень для вашого веб-сайту.
Раніше я писав кілька статей з оптимізації зображень. До цих пір TinyPNG був моїм улюбленим, і все ще є. Але обмеження TinyPNG полягає в тому, що вони дозволяють оптимізувати 500 безкоштовних зображень на місяць. Понад 500 зображень ви будете платити за кожне зображення.
Кілька попередніх статей з оптимізації зображень:
Є й інші пакети, але вони вимагають від нас встановлення програмного забезпечення, такого як JpegOptim, Optipng тощо на нашій машині. Це також не є можливим рішенням.
Останній рік я працював над проектом клієнта, який містить тисячі зображень, необхідних для стиснення. Ми шукали відкритого коду та ефективного сервісу, який може виконувати нашу роботу. Потім ми дізналися про reSmush.it, який є абсолютно безкоштовною послугою для оптимізації зображень.
Хоча я писав статтю на reSmush.it, я відчуваю, що можу створити з неї пакет GitHub, і я це зробив. Якщо ви прочитаєте мою статтю на reSmush.it, то виявите, що до неї потрібно додати близько 25-30 рядків коду. Але якщо ви йдете за пакетом, це можна зробити в 5-6 рядків.
З огляду на це, давайте обговоримо, як встановити та використовувати artisansweb/image-optimizer
пакет.
Оптимізація зображень за допомогою 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 для оптимізації.
Триває декілька нових функцій, які я додаю до пакету та випускаю незабаром.
Буду радий, якщо ви скористаєтесь пакунком і дасте мені знати, як він працює, у розділі коментарів нижче. Поділіться своїми відгуками, щоб ми разом могли вдосконалити цей пакет, який допоможе громаді.