✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Compactar imagens para site usando reSmush.it em PHP

49

Postado em PHP

As imagens tornam seu site bonito e adicionam uma melhor experiência do usuário aos visitantes. No entanto, as imagens também podem afetar o desempenho do site e tornar a velocidade do site incrivelmente lenta. E todos nós sabemos que sites mais lentos não podem ter sucesso na Internet.

Neste artigo, mostramos como compactar imagens para sites usando reSmush.it em PHP. Usando este serviço, os usuários podem reduzir o tamanho das imagens de seus sites. Isso ajudará a melhorar a velocidade da página. O reSmush.it é uma ferramenta gratuita de compressão de imagens. Um usuário pode compactar quantas imagens desejar. Não existe tal limite para o número de imagens.

No momento em que este artigo foi escrito, o reSmush.it compactava mais de 7 bilhões de imagens até agora e ainda contando. Este número prova que é um serviço bastante popular entre os usuários.

Começando

Vamos criar um formulário simples onde o usuário pode fazer o upload da imagem. Ao enviar a imagem, em PHP iremos enviar a imagem para os serviços reSmush.it e receber a versão otimizada da nossa imagem.

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

Aqui, adicionamos um botão de entrada e envio de arquivo. Também usamos um atributo accept="image/*"que permite selecionar apenas arquivos de imagem.

Compactar imagens para sites em PHP

Agora, temos que interagir com a API reSmush.it. Vamos escrever um código que executa as etapas a seguir.

  • Carregue a imagem em nosso servidor.
  • Envie a imagem carregada para o endpoint da API reSmush.it.
  • Recebe o caminho de uma imagem otimizada.
  • Armazene esta versão otimizada em nosso servidor, substituindo a imagem original.

Antes de continuar, certifique-se de ter habilitado a extensão cURL em seu 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.";
}
?>

No código acima, eu defino o valor de qualidade para ’80’, o que é recomendado. Você pode ajustar esse número para mais ou menos. Estamos armazenando imagens dentro do uploadsdiretório. No seu caso, você pode ajustar este diretório.

Espero que você entenda como compactar imagens para o site em PHP usando reSmush.it. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação