Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BrunoBit

Redimensionar imagem sem perder qualidade com PHP

Recommended Posts

Fala rapaziada. 

Queria saber, de acordo com a experiência de vocês, como faço pra redimensionar uma imagem .PNG sem perder qualidade com php?

Pq quando eu redimensiono a imagem perde qualidade no navegador Chrome, fica levemente ofuscada, porém no firefox mantém a qualidade perfeita.

Digo isso com relação à logos, geralmente redimensionadas pra 150/200px e originalmente com 1200px.

 

Alguém conhece alguma solução?

 

Desde já agradeço pessoal, abração e fiquem com Deus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor solução seria a logo ser em SVG.

 

Como está o seu código?

Se pega no firefox ok pode ser outra coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Bergs obrigado pela dica irmão, testei o svg aqui e parece que ta bem melhor, o único problema é que ele transformou o fundo transparente em preto, e a letra que era branca ficou transparente. Sabe como corrigir? Utilizei o convertio.co pra fazer a conversão de png pra svg, aí deu esse "bug".

 

Obrigado pela dica, sempre via esse svg em alguns sites, mas nunca tinha dado bola pra testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não redimensione diretamente no navegador.

Use o PHP para criar uma miniatura e exiba ela ao usuário.

 

Evite a biblioteca GD. Recomendo a imagick.

Veja: https://www.sitepoint.com/crop-and-resize-images-with-imagemagick/

 

Obs: você precisa ter a biblioteca instalada no seu servidor. Verifique rodando um phpinfo() e procurando por "imagick".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande @Matheus Tavares obrigado pela indicação. Ainda não fiz nenhum tipo de instalação de biblioteca em servidor, estou procurando algum tutorial aqui pra fazer essa instalação em hospedagem e não encontrei. Sabe algum tutorial onde eu possa aprender?

 

Obrigadão pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você usa uma hospedagem compartilhada comum, você não tem acesso a esse tipo de recurso (instalação de extensões do PHP), mas você pode pedir à empresa para que eles instalem.

Já passei situações parecidas ao menos umas 5 vezes e as empresas sempre atenderam meu pedido de instalar a extensão (imagick, apc, tidy, phalcon, etc...).

 

Você chegou a rodar o phpinfo() e não encontrou o imagick lá? Pois é relativamente comum ele vir instalado hoje em dia.

 

Em último caso, use a biblioteca GD mesmo. Ele é um pouco inferior e não gera imagens com a mesma qualidade do imagick, mas é uma lib boa também. Pelo menos já seria bem melhor do que redimensionar direto no navegador (além de que seu usuário iria carregar um arquivo bem menor, tornando a navegação mais rápida para ele).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito Matheus, vou seguir esse procedimento e entrar em contato com o suporte. Rodei o phpinfo() sim, dei um ctrl + f e não encontrei o imagick instalado, vou falar com o suporte mesmo.

 

Obrigadão irmão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      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
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
×

Informação importante

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