Optymalizacja obrazu za pomocą pakietu artisansweb/image-optimizer
Od 4 lat prowadzę tego bloga. Wraz z tym blogiem prowadzę również kanał na YouTube, na którym udostępniam filmy, które pokazują, jak wdrażać moje artykuły.
Wierzę w open source. Na mojej stronie nie prowadzę płatnego członkostwa, nie sprzedaję ebooków ani kursów. Lubię mieć wolne zasoby. Mając to na uwadze, stworzyłem mój pierwszy pakiet GitHub artisansweb/image-optimizer, który zajmuje się optymalizacją obrazów dla Twojej witryny.
W przeszłości napisałem kilka artykułów na temat optymalizacji obrazu. Do tej pory TinyPNG był moim ulubionym i nadal jest. Ale ograniczenie TinyPNG polega na tym, że umożliwiają optymalizację 500 darmowych obrazów miesięcznie. Powyżej 500 obrazów naliczana jest opłata za obraz.
Kilka poprzednich artykułów na temat optymalizacji obrazu:
Istnieją również inne pakiety, ale wymagają one zainstalowania na naszym komputerze oprogramowania takiego jak JpegOptim, Optipng itp. To też nie jest możliwe rozwiązanie.
W zeszłym roku pracowałem nad projektem klienta, który ma tysiące obrazów potrzebnych do kompresji. Szukaliśmy open source i wydajnej usługi, która może wykonać naszą pracę. Potem dowiedzieliśmy się o reSmush.it, który jest całkowicie darmową usługą do optymalizacji obrazów.
Chociaż napisałem artykuł na temat reSmush.it, czuję, że mogę z niego stworzyć pakiet GitHub i tak zrobiłem. Jeśli przeczytałeś mój artykuł na reSmush.it, przekonasz się, że trzeba dodać około 25-30 linijek kodu. Ale jeśli zdecydujesz się na pakiet, możesz to zrobić w 5-6 liniach.
Mając to na uwadze, omówmy, jak zainstalować i używać artisansweb/image-optimizer
pakietu.
Optymalizacja obrazu za pomocą PHP
Najpierw musisz zainstalować pakiet za pomocą Kompozytora, uruchamiając polecenie:
composer require artisansweb/image-optimizer
Po zainstalowaniu pakietu możesz zoptymalizować obraz za pomocą poniższego kodu.
<?php
require_once "vendor/autoload.php";
use ArtisansWebOptimizer;
$img = new Optimizer();
$source = 'SOURCE_PATH_OF_IMAGE';
$img->optimize($source);
Tutaj musisz przekazać pełną ścieżkę katalogu obrazu źródłowego, a obraz źródłowy zostanie automatycznie zoptymalizowany. Czasami trzeba zachować oryginalny obraz i przechowywać zoptymalizowaną wersję w innym katalogu. W takim przypadku możesz użyć drugiego parametru jako miejsca docelowego.
<?php
$source = 'SOURCE_PATH_OF_IMAGE';
$destination = 'DESTINATION_PATH_OF_IMAGE';
$img->optimize($source, $destination);
Używając powyższego kodu, możesz zoptymalizować obrazy, które znajdują się w twoim katalogu. Zalecam jednak zoptymalizowanie obrazu podczas przesyłania, aby nie trzeba było osobno wykonywać zadań optymalizacyjnych.
Użytkownik może zoptymalizować obraz podczas przesyłania w następujący sposób.
<?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>
Chociaż reSmush.it do tej pory skompresował miliardy obrazów, może być możliwe, że ich usługa z jakiegoś powodu nie działa. Ten scenariusz obsługiwałem w pakiecie. Z jakiegoś powodu, jeśli pakiet nie otrzyma zoptymalizowanej wersji z reSmush.it, to jako rezerwę używa natywnych metod PHP, takich jak imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif, imagejpeg do optymalizacji.
Jest w toku kilka nowych funkcji, które dodam do pakietu i wkrótce go wydam.
Będzie mi miło, jeśli skorzystasz z pakietu i dam znać, jak działa w komentarzach poniżej. Podziel się swoją opinią, abyśmy razem mogli ulepszyć ten pakiet, który pomoże społeczności.