ezequiel972 Postado Setembro 24, 2011 Denunciar Share Postado Setembro 24, 2011 (editado) Boa noiteto trabalhando no desenvolvimento de uma galaria de fotos que redimenciona as fotos de acordo com o pedidourl chamada img.php?x=640&y=640&file=../../data/albuns/2/1224 (2).jpgX e Y = dimencoes da imagem de saida obs. acima de 150px sai com logomarca do sitefile = caminho do arquivo a ser redimencionadotudo funciona mas a qualidade fica ruimum tempo atras ouvi falar que tem uma função que retorna a qualidade original da imagem para a saidasegue 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 browserimagedestroy($imagem[1][1]); // apaga da memoria ?>preciso melhorar a qualidade da imagem de saidaaguardo retornodesde já grato!!!! Editado Setembro 24, 2011 por ezequiel972 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 24, 2011 Denunciar Share Postado Setembro 24, 2011 Se você já setou a qualidade de 100 e não é o suficiente não há mais o que fazer em relação a isto... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ezequiel972 Postado Setembro 25, 2011 Autor Denunciar Share Postado Setembro 25, 2011 Se você já setou a qualidade de 100 e não é o suficiente não há mais o que fazer em relação a isto...okrefiz o aplicativo e consegui uma melhoravaleu. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ezequiel972
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 ezequiel972Link 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.