Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Redimencionar imagens com qualidade


ezequiel972

Pergunta

Boa noite

to trabalhando no desenvolvimento de uma galaria de fotos que redimenciona as fotos de acordo com o pedido

url chamada

img.php?x=640&y=640&file=../../data/albuns/2/1224 (2).jpg

X e Y = dimencoes da imagem de saida obs. acima de 150px sai com logomarca do site

file = caminho do arquivo a ser redimencionado

tudo funciona mas a qualidade fica ruim

um tempo atras ouvi falar que tem uma função que retorna a qualidade original da imagem para a saida

segue o codigo fonte de img.php

<?php

///////////////////////////////////////////////////

//obs tamanho maximo do thunbs 150px

///////////////////////////////////////////////////

function reduz_imagem($img, $max_x, $max_y , $x) { // recebe a imagem , x , y , extenção ; sempre jpg

list($width, $height) = getimagesize($img); // obtem dimenções

$original_x = $width;

$original_y = $height;

if($original_x > $original_y) { //verifica se largura e maior que altura ou vice versa

$porcentagem = (100 * $max_x) / $original_x;

} else {

$porcentagem = (100 * $max_y) / $original_y;

}

$tamanho_x = $original_x * ($porcentagem / 100); //obtem a porcentagem de relação entre os tamanho original e maximo

$tamanho_y = $original_y * ($porcentagem / 100); //largura e altura

$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);

$image = imagecreatefromjpeg($img); // cria a imagem

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); //não sei bem para que serve est aparte

/// apenas colooca os dados no array

$reduzido=array();

$reduzido[1]=$image_p;

$reduzido[2]=$porcentagem;

$reduzido[3]=$tamanho_x;

$reduzido[4]=$tamanho_y;

return $reduzido; //envia o resultado do processo

}

$imagem[1] = reduz_imagem($_GET['file'], $_GET['x'], $_GET['y'], 'jpg'); //chama a função reduz_imagem()

if($_GET['x']>150) { //verifica se sera uma imagem ou thumb, menor que 150 trhumb, maior imagem com logo

$logo = imagecreatefromPNG("../../data/albuns/data/logo.png");

imagecolortransparent ($logo, imagecolorallocate($logo, 255, 255, 255));

imagecopymerge($imagem[1][1],$logo, ($a=$imagem[1][3]-imagesx($logo)), ($b=$imagem[1] [4]-imagesy($logo)),0,0, (imagesx($logo)*$imagem[1][3]/100),(imagesy($logo)*$imagem[1][4]/100),100);

}

imagejpeg($imagem[1][1],null, 100); // envia imagem para o browser

imagedestroy($imagem[1][1]); // apaga da memoria

?>

preciso melhorar a qualidade da imagem de saida

aguardo retorno

desde já grato!!!!

Editado por ezequiel972
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...