Komprimera bilder för webbplatsen med reSmush.it i PHP
Upplagt i PHP
Bilder gör din webbplats vacker och ger besökarna en bättre användarupplevelse. Bilder kan dock också påverka webbplatsens prestanda och gör din webbplats hastigt vansinnigt långsam. Och vi vet alla att långsammare webbplatser inte kan lyckas på Internet.
I den här artikeln visar vi dig hur du komprimerar bilder för webbplatser med reSmush.it i PHP. Genom att använda denna tjänst kan användare minska storleken på deras webbplatsbilder. Det hjälper till att förbättra sidhastigheten. ReSmush.it är ett gratis bildkompressorverktyg. En användare kan komprimera så många bilder som de vill. Det finns ingen sådan gräns för antalet bilder.
När denna artikel skrivs komprimerar reSmush.it mer än 7 miljarder bilder hittills och räknar fortfarande. Detta nummer visar att det är en ganska populär tjänst bland användarna.
Komma igång
Låt oss skapa ett enkelt formulär där användaren kan ladda upp bilden. När vi skickar in bilden med PHP skickar vi bilden till reSmush.it-tjänsterna och får den optimerade versionen av vår bild.
<form method="post" enctype="multipart/form-data">
<p><input type="file" name="image" accept="image/*" /></p>
<input type="submit" name="submit" value="Submit">
</form>
Här har vi lagt till en filinmatnings- och skicka-knapp. Vi använde också ett attribut accept="image/*"
som låter dig välja endast bildfiler.
Komprimera bilder för webbplats i PHP
Nu måste vi interagera med API för reSmush.it. Vi ska skriva en kod som utför följande steg.
- Ladda upp bild på vår server.
- Skicka den uppladdade bilden till API-slutpunkten för reSmush.it.
- Tar emot sökvägen till en optimerad bild.
- Lagra den här optimerade versionen på vår server genom att ersätta originalbilden.
Innan du fortsätter, se till att du har aktiverat cURL-tillägget på din server.
<?php
if (isset($_POST['submit'])) {
//allowed file types
$arr_file_types = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg'];
if (!(in_array($_FILES['image']['type'], $arr_file_types))) {
die('Only image is allowed!');
}
if (!file_exists('uploads')) {
mkdir('uploads', 0777);
}
move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/'. $_FILES['image']['name']);
// optimize image using reSmush.it
$file = getcwd(). '/uploads/'. $_FILES['image']['name'];
$mime = mime_content_type($file);
$info = pathinfo($file);
$name = $info['basename'];
$output = new CURLFile($file, $mime, $name);
$data = array(
"files" => $output,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.resmush.it/?qlty=80');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
if (curl_errno($ch)) {
$result = curl_error($ch);
}
curl_close ($ch);
$arr_result = json_decode($result);
// store the optimized version of the image
$ch = curl_init($arr_result->dest);
$fp = fopen(getcwd(). '/uploads/'. $name, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
echo "File uploaded successfully.";
}
?>
I ovanstående kod ställer jag in kvalitetsvärdet till ’80’ vilket rekommenderas. Du kan justera detta nummer till mer eller mindre. Vi lagrar bilder i uploads
katalogen. I ditt fall kan du justera den här katalogen.
Jag hoppas att du förstår hur du komprimerar bilder till webbplatsen i PHP med reSmush.it. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- TinyPNG Komprimera bilder med PHP
- En guide för att ladda upp och komprimera bilder i Laravel
- Bildoptimering med hjälp av artisansweb / image-optimizer Package