Ir para conteúdo

POWERED BY:

ILR master

Converter jpg para webp

Recommended Posts

Fala pessoal.

Não estou conseguindo converter .jpg para .webp

 

Alguém pode me ajudar? Segue código abaixo:

 

$fotob = 'imagem.jpg';
$foto = explode('.',$fotob);
$f = $foto[0];
$forigem = $fotob;
$origem = 'fotos_noticias/'.$forigem;
$fdestino = $f.'.webp';
$destino = 'fotos_capa/'.$fdestino;
$imagem = imagecreatefromjpeg($origem);
$imgX = imagesx($imagem);
$imgY = imagesy($imagem);
$novaImagem = imagecreatetruecolor($imgX, $imgY);
imagealphablending($novaImagem, false);
imagesavealpha($novaImagem, true);
imagecopyresampled($novaImagem, $imagem, 0, 0, 0, 0, $imgX, $imgY, $imgX, $imgY);
imagewebp($novaImagem, $destino, 100);
imagedestroy($imagem); // Importante para limpar o cache

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um formato que particularmente detesto, mas em fim tentei algumas coisas aqui e a perda da qualidade da imagem ao recriar ela no servidor considerei ruim, pelo menos a meus olhos a perda de qualidade foi expressiva.

Não sei se é meu servidor ou o php que não manipula bem esse formato.

 

Então deixei a cargo do usuário decodificar o binário da imagem e apenas mandar esse código ao invés de fazer um upload.

Mesmo assim não consegui recriar a imagem apenas usar o código para reescrever.

Como usei script's meus tive de criar um exemplo

https://drive.google.com/file/d/1Xyv05MLGNjEhojukh4tAzXuYY6L3B1b3/view?usp=sharing

 

Ações:

1 Usuário - Selecionar uma imagem qualquer

2 Usuário - Codificar a imagem

3 Usuário - Pré visualizar essa imagem

4 Usuário  - Adicionar todo código de informação da imagem

5 Usuário - Enviar os dados dessa imagem (não faz upload)

6 Servidor - Isolar o binário da imagem

7 Servidor - Reescrever uma imagem idêntica a selecionada pelo usuário na máquina dele

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por maiconparra
      Olá a todos me deparei com um pequeno problema irritante. Eu estou usando um código PHP parecido com este: 
       
      $image = imagecreatefromjpeg($imagem); imagewebp($image, $caminho_do_diretório/exemplo.webp, 100); Para fazer a conversão de JPEG ou PNG para webp.
      Porém algumas imagens, não sei se é dimensionamento ou outro fator. Por vezes fica em branco depois da conversão.
      Eu já coloque em um if porque o retorno da função imagewebp é um boolean, fiz tratamento de exeção e não consigo capturar qual é o erro.
      Se alguém já tiver passado por algo parecido e puder me dar uma luz. Ficaria muito grato.
    • Por LucasLV
      Olá.
      Tenho um site onde as imagens são geradas através de um arquivo PHP - utilizo esse método para retornar imagens webp ou jpg - e vi que o navegador não utiliza, ou não salva em cache, as imagens geradas dessa forma.
      Já as onde informo o caminho completo da imagem com a extensão, aparecem como utilizadas do cache.

      Esse comportamento é normal quando as imagens são geradas desse jeito ou é por não ter feito nenhuma configuração de cache no arquivo PHP que gera as imagens?
       
      Coloquei uma imagem do resultado exibido no navegador.

    • Por stumpy
      Boa  noite gente estou com um site em asp clássico que até indexa no google  usei a imagem amp mas quando vou postar no facebook ou outras redes sociais ela não aparece  vi que tem o componente  para  transformar um jpg  em um webp  só que não achei nada em asp clássico alguém sabe como  consegue me ajudar ?
    • Por Wallcrawler
      Olá pessoal tudo bem? Estou tentando fazer a cópia de uma imagem que está disponível na web e salvar em uma pasta no meu projeto. Essa imagem está sob protocolo SSL mas navegador consegue acessá-la normalmente. Mas o meu script php é bloqueado, e não entendo o porquê.
       
      Segue o código que estou usando:
      <?php //error_reporting(E_ALL ^ E_DEPRECATED); //ini_set('display_errors', 1); //die('Script travado!'); $start = microtime(true); set_time_limit(0); function save_image($inPath,$outPath) { //Download images from remote server $in = fopen($inPath, 'rb'); $out = fopen($outPath, 'wb'); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/classes/Rpi.class.php'); include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/functions.class.php'); $func = new FuncoesAuxiliares(); $rpi = new Rpi(); if(!isset($_GET['num_processo'])) { $rows = $rpi->Consulta('select num_processo, classe, especificacao from processos order by num_processo ASC limit 1'); } else { $rows = $rpi->Consulta("select num_processo, classe, especificacao from processos where num_processo > '" . $_GET['num_processo'] . "' order by num_processo ASC limit 1"); } $registros = 0; $arrayInsert = array(); $qtd_caracteres_total = 14; foreach ($rows as $rs) { //$rs['num_processo'] $zeros = ''; $qtd_char_processo = strlen($rs['num_processo']); //Fill zeros for($i=0; $i < ($qtd_caracteres_total - $qtd_char_processo); $i++) { $zeros .= '0'; } echo('BR5' . $zeros . $rs['num_processo'] . '<br>'); $url = 'http://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo']; //Aqui tento acessar a imagem e salvar na pasta correspondente save_image($url, __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); //copy('https://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo'], __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); $processo = $rs['num_processo']; $registros++; } $registros = number_format($registros, 0, ',', '.'); // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '. $execution_time .' Mins <hr><br><br>Registros: ' . $registros . '<br><br>'; echo("<a href='down_logo.php?num_processo=" . $processo ."' target='_self'>Próxima página</a><br><br>"); ?> O erro retornado é o seguinte:
       
      Warning: fopen(): SSL: Connection reset by peer in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fopen(http://www.tmdn.org/tmview/trademark/image/BR500000825642590): failed to open stream: HTTP request failed! in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fread() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 12

      Warning: fclose() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 16
       
      Só que se você tentar acessar o endereço no browser, diretamente, a imagem aparece:
       
      https://www.tmdn.org/tmview/trademark/image/BR500000825642590 
       
      Onde posso estar errando? Obrigado pela atenção de todos.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.