...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Kompresuj obrazy dla strony internetowej za pomocą reSmush.it w PHP

23

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 uploadskatalogu. 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

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów