Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Redimencionar imagens com qualidade


ezequiel972

Question

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 ezequiel972
Link 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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...