t12 0 Denunciar post Postado Fevereiro 14, 2008 Olá pessoal, Estou com um problema, que pode ser também de outros. Fiz um site para uma revendedora de carros, até aí tudo bem. O problema é na hora de inserir as fotos do veículo cadastrado. Quando o cliente insere a foto, o sistema reduz a foto para o tamanho de 300x225 px para se adequar ao site. O problema é que o resultado é que a imagem fica pouco distorcida. Se comparar o sistema com o Webmotors, ele reduz a foto e fica bem definida. Este problema não se refere a qualidade da Imagem JPG pois comparei as duas fotos: uma do meu site e outra do Webmotors e o resultado é que a do meu site fica distorcida e a do Webmotors fica perfeita, e ambas as fotos estão em qualidade 66 do JPG. Vou deixar aqui as duas imagens para fazer uma comparação: Exemplo de Imagem da Webmotors Exemplo de Imagem tratada pelo meu site Veja o script que estou usando para reduzir a imagem //IMAGEM GRANDE if($largura>300||$altura>225) { //verifica se há necessidade de diminuir a imagem //analisa tamanho para ver a porcentagem de diminuição if($largura>$altura) { $porcentagem=300/$largura*100; } else { $porcentagem=225/$altura*100; } $novalargura=$largura/100*$porcentagem; $novaaltura=$altura/100*$porcentagem; // DEFINE A IMAGEM DA QUAL SERÁ GERADA A MINIATURA $imagem = $dest; // DEFINIR O NOME DO ARQUIVO PARA O THUMBNAIL $thumbnail = explode('.', $imagem); $thumbnail = $imagem; // DEFINIR AS DIMENSÕES PARA O THUMBNAIL $x = $novalargura; // Largura $y = $novaaltura; // Altura // LÊ A IMAGEM DE ORIGEM $img_origem = ImageCreateFromJPEG($imagem); // PEGA AS DIMENSÕES DA IMAGEM DE ORIGEM $origem_x = imagesx($img_origem); // Largura $origem_y = imagesy($img_origem); // Altura // ESCOLHE A LARGURA MAIOR E, BASEADO NELA, GERA A LARGURA MENOR if($origem_x > $origem_y) { // Se a largura for maior que a altura $final_x = $x; // A largura será a do thumbnail $final_y = floor($x * $origem_y / $origem_x); // A altura é calculada $f_x = 0; // Colar no x = 0 $f_y = round(($y / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail } else { // Se a altura for maior ou igual à largura $final_x = floor($y * $origem_x / $origem_y); // Calcula a largura $final_y = $y; // A altura será a do thumbnail $f_x = round(($x / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail $f_y = 0; // Colar no y = 0 } // CRIA A IMAGEM FINAL PARA O THUMBNAIL $img_final = imagecreatetruecolor($x,$y); // COPIA A IMAGEM ORIGINAL PARA DENTRO DO THUMBNAIL ImageCopyResized($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y); // SALVA O THUMBNAIL ImageJPEG($img_final, $thumbnail); // LIBERA A MEMÓRIA ImageDestroy($img_origem); ImageDestroy($img_final); } Alguém conhece algum script que faça com que a imagem seje reduzida sem distorções? Compartilhar este post Link para o post Compartilhar em outros sites
buenoweb 7 Denunciar post Postado Fevereiro 15, 2008 O problema não é a qualidade e sim as dimensões da foto original. Após reduzida, a largura e a altura devem ser proporcionais a original. você está redimensionando para um tamanho fixo, o que pode destoorcer a imagem se as dimensões originais forem desproporcionais. O que eu faço é definir somente a largura da imagem reduzida e diminuir proporcionalmente a altura., usando regrinha de três.As imagens nunca ficam distorcidas. No site, a altura com alguns pixels de diferença, não fazem tanta diferença. Depois, sugiro ao cliente usar sempre a mesma resolução e se possível, sempre a mesma máquina, evitando diferença entre as fotos. Como uso sempre a mesma largura. costumo listar as fotos verticalmente no site, assim, as diferentes alturas não fazem diferença. Para imagens dispostas horizontalmente, onde largura e altura devem ser as mesmas, a foto original deve ter dimensões proporcionais, por isso sugiro mesma resolução e mesma máquina, pois a resolução de uma máquina para outra pode variar. Espero que essa dica ajude. Compartilhar este post Link para o post Compartilhar em outros sites
t12 0 Denunciar post Postado Fevereiro 15, 2008 O tamanho da imagem reduzida, sempre fica proporcional ao original, só que o tamanho nunca irá ultrapassar os 300 por 225 px, mas sempre proporcional ao original. Se puder me passar o código que você tem por e-mail eu agradeço: tiago12@gmail.com Mesmo assim agradeço pela força valew!!! O problema não é a qualidade e sim as dimensões da foto original. Após reduzida, a largura e a altura devem ser proporcionais a original. você está redimensionando para um tamanho fixo, o que pode destoorcer a imagem se as dimensões originais forem desproporcionais. O que eu faço é definir somente a largura da imagem reduzida e diminuir proporcionalmente a altura., usando regrinha de três.As imagens nunca ficam distorcidas. No site, a altura com alguns pixels de diferença, não fazem tanta diferença. Depois, sugiro ao cliente usar sempre a mesma resolução e se possível, sempre a mesma máquina, evitando diferença entre as fotos. Como uso sempre a mesma largura. costumo listar as fotos verticalmente no site, assim, as diferentes alturas não fazem diferença. Para imagens dispostas horizontalmente, onde largura e altura devem ser as mesmas, a foto original deve ter dimensões proporcionais, por isso sugiro mesma resolução e mesma máquina, pois a resolução de uma máquina para outra pode variar. Espero que essa dica ajude. Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Fevereiro 15, 2008 Tente usar imagecopyresampled ao invés de imagecopyresized! Compartilhar este post Link para o post Compartilhar em outros sites
programador php 0 Denunciar post Postado Fevereiro 15, 2008 cara se puder me mandar por e-mail o código do site ficaria muito grato.. ou postar aqui e me enviar uma MP dizendo que postou!!! ultimamente esta corrido a minha vida! quase num tenho tempo para o forum abraço Compartilhar este post Link para o post Compartilhar em outros sites