Kompresuj obrazy dla strony internetowej za pomocą reSmush.it w PHP
Opublikowany w PHP
Obrazy sprawiają, że Twoja witryna jest piękna i zapewnia lepsze wrażenia użytkowników. Jednak obrazy mogą również wpłynąć na wydajność witryny i sprawić, że szybkość witryny będzie szalenie niska. A wszyscy wiemy, że wolniejsze strony internetowe nie mogą odnieść sukcesu w Internecie.
W tym artykule pokazujemy, jak kompresować obrazy dla stron internetowych za pomocą reSmush.it w PHP. Korzystając z tej usługi, użytkownicy mogą zmniejszyć rozmiar obrazów na swoich stronach internetowych. Pomoże to w poprawie szybkości strony. reSmush.it to darmowe narzędzie do kompresji obrazu. Użytkownik może skompresować dowolną liczbę obrazów. Nie ma takiego ograniczenia liczby zdjęć.
W chwili pisania tego artykułu reSmush.it kompresuje do tej pory ponad 7 miliardów obrazów i wciąż się liczy. Ta liczba świadczy o tym, że jest to dość popularna usługa wśród użytkowników.
Pierwsze kroki
Stwórzmy prosty formularz, w którym użytkownik może przesłać obraz. Po przesłaniu obrazu za pomocą PHP wyślemy obraz do usług reSmush.it i otrzymamy zoptymalizowaną wersję naszego obrazu.
<form method="post" enctype="multipart/form-data">
<p><input type="file" name="image" accept="image/*" /></p>
<input type="submit" name="submit" value="Submit">
</form>
Tutaj dodaliśmy plik wejściowy i przycisk przesyłania. Użyliśmy również atrybutu, accept="image/*"
który pozwala wybrać tylko pliki graficzne.
Kompresuj obrazy dla strony internetowej w PHP
Teraz musimy wejść w interakcję z interfejsem API reSmush.it. Zamierzamy napisać kod, który wykona następujące kroki.
- Prześlij obraz na nasz serwer.
- Wyślij przesłany obraz do punktu końcowego interfejsu API reSmush.it.
- Otrzymuje ścieżkę zoptymalizowanego obrazu.
- Przechowuj tę zoptymalizowaną wersję na naszym serwerze, zastępując oryginalny obraz.
Zanim przejdziesz dalej, upewnij się, że masz włączone rozszerzenie cURL na swoim serwerze.
<?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.";
}
?>
W powyższym kodzie ustawiłem wartość jakości na „80", co jest zalecane. Możesz dostosować tę liczbę do mniej więcej. Przechowujemy obrazy w uploads
katalogu. W twoim przypadku możesz dostosować ten katalog.
Mam nadzieję, że rozumiesz, jak skompresować obrazy dla witryny w PHP za pomocą reSmush.it. Chciałbym usłyszeć wasze przemyślenia i sugestie w sekcji komentarzy poniżej.
Powiązane artykuły
- TinyPNG Kompresuj obrazy za pomocą PHP
- Przewodnik po przesyłaniu i kompresowaniu obrazów w Laravel
- Optymalizacja obrazu za pomocą pakietu artisansweb/image-optimizer