Bildoptimering med hjälp av artisansweb / image-optimizer Package
Det har gått fyra år nu jag driver den här bloggen. Tillsammans med den här bloggen driver jag också en YouTube-kanal där jag delar videor som visar hur jag implementerar mina artiklar.
Jag tror på öppen källkod. På min webbplats driver jag inget betalt medlemskap, säljer inte e-böcker eller kurser. Jag gillar att hålla resurserna fria. Med detta i åtanke skapade jag mitt första GitHub-paket artisansweb / image-optimizer som gör uppgiften att optimera bilder för din webbplats.
Jag har skrivit några artiklar om bildoptimering tidigare. Hittills var TinyPNG min favorit och det är det fortfarande. Men begränsningen med TinyPNG är att de möjliggör optimering av 500 gratis bilder per månad. Över 500 bilder debiteras per bild.
Få av tidigare artiklar om bildoptimering:
Det finns också andra paket, men de kräver att vi installerar programvara som JpegOptim, Optipng, etc. på vår maskin. Det är inte heller en genomförbar lösning.
Under det senaste året arbetade jag med en kunds projekt som har tusentals bilder som behövs för att komprimera. Vi letade efter öppen källkod och effektiv service som kan göra vårt jobb. Då lärde vi oss om reSmush.it som är helt gratis tjänst för att optimera bilder.
Även om jag skrev en artikel på reSmush.it känner jag att jag kan skapa ett GitHub-paket ur det och det gjorde jag. Om du läser min artikel på reSmush.it, hittar du att den måste lägga till cirka 25-30 rader kod. Men om du väljer paketet kan det göras i 5-6 rader.
Med det sagt, låt oss diskutera hur man installerar och använder artisansweb/image-optimizer
paketet.
Bildoptimering med PHP
Först måste du installera paketet med Composer genom att köra kommandot:
composer require artisansweb/image-optimizer
Vid paketinstallation kan du optimera bilden med hjälp av koden nedan.
<?php
require_once "vendor/autoload.php";
use ArtisansWebOptimizer;
$img = new Optimizer();
$source = 'SOURCE_PATH_OF_IMAGE';
$img->optimize($source);
Här måste du skicka hela katalogvägen för källbilden och din källbild optimeras automatiskt. Ibland måste du behålla originalbilden och lagra den optimerade versionen i en annan katalog. I så fall kan du använda en andra parameter för destinationen.
<?php
$source = 'SOURCE_PATH_OF_IMAGE';
$destination = 'DESTINATION_PATH_OF_IMAGE';
$img->optimize($source, $destination);
Med hjälp av ovanstående kod kan du optimera dina bilder som finns där i din katalog. Jag skulle dock rekommendera att du optimerar bilden vid uppladdningen så att du inte behöver utföra optimeringsuppgifter separat.
Användaren kan optimera bilden vid uppladdningen enligt följande.
<?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>
Även om reSmush.it hittills komprimerade miljarder bilder kan det vara möjligt att deras tjänst är nere av någon anledning. Jag hanterade detta scenario i paketet. Av någon anledning, om paketet inte får en optimerad version från reSmush.it, använder den som ett reservfält PHP: s ursprungliga metoder som imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif, imagejpeg för optimering.
Det finns flera nya funktioner pågår som jag kommer att lägga till i paketet och släppa det snart.
Jag kommer att vara glad om du använder paketet och låt mig veta hur det fungerar i kommentarsektionen nedan. Vänligen dela din feedback så att vi tillsammans kan förbättra detta paket som kommer att hjälpa samhället.