...
✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Comprimir imágenes para sitios web usando reSmush.it en PHP

91

Publicado en PHP

Las imágenes embellecen su sitio web y añaden una mejor experiencia de usuario a los visitantes. Sin embargo, las imágenes también pueden afectar el rendimiento del sitio y hacer que su velocidad sea increíblemente lenta. Y todos sabemos que los sitios web más lentos no pueden tener éxito en Internet.

En este artículo, le mostramos cómo comprimir imágenes para sitios web usando reSmush.it en PHP. Al utilizar este servicio, los usuarios pueden reducir el tamaño de las imágenes de su sitio web. Ayudará a mejorar la velocidad de la página. ReSmush.it es una herramienta de compresión de imágenes gratuita. Un usuario puede comprimir tantas imágenes como desee. No existe tal límite en el número de imágenes.

En el momento de escribir este artículo, reSmush.it comprime más de 7 mil millones de imágenes hasta ahora y sigue contando. Este número demuestra que es un servicio bastante popular entre los usuarios.

Empezando

Creemos un formulario simple donde el usuario puede subir la imagen. Al enviar la imagen, usando PHP enviaremos la imagen a los servicios reSmush.it y recibimos la versión optimizada de nuestra imagen.

<form method="post" enctype="multipart/form-data">
    <p><input type="file" name="image" accept="image/*" /></p>
    <input type="submit" name="submit" value="Submit">
</form>

Aquí agregamos una entrada de archivo y un botón de envío. También usamos un atributo accept="image/*"que le permite seleccionar solo archivos de imagen.

Comprimir imágenes para sitios web en PHP

Ahora, tenemos que interactuar con la API reSmush.it. Vamos a escribir un código que realiza los siguientes pasos.

  • Sube una imagen a nuestro servidor.
  • Envíe la imagen cargada al punto final de la API reSmush.it.
  • Recibe la ruta de una imagen optimizada.
  • Almacene esta versión optimizada en nuestro servidor reemplazando la imagen original.

Antes de continuar, asegúrese de haber habilitado la extensión cURL en su servidor.

<?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.";
}
?>

En el código anterior, configuré el valor de calidad en ’80’ que se recomienda. Puede ajustar este número a más o menos. Estamos almacenando imágenes dentro del uploadsdirectorio. En su caso, puede ajustar este directorio.

Espero que comprenda cómo comprimir imágenes para el sitio web en PHP usando reSmush.it. Me gustaría escuchar sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More