ezequiel972 Posted September 24, 2011 Report Share Posted September 24, 2011 (edited) 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!!!! Edited September 24, 2011 by ezequiel972 Quote Link to comment Share on other sites More sharing options...
0 ESerra Posted September 24, 2011 Report Share Posted September 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... Quote Link to comment Share on other sites More sharing options...
0 ezequiel972 Posted September 25, 2011 Author Report Share Posted September 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. Quote Link to comment Share on other sites More sharing options...
Question
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!!!!
Edited by ezequiel972Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.