Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Abimael

Diminuir foto sem distorcer.

Recommended Posts

function reduz_imagem($img, $max_x, $max_y, $nome_foto) {		//pega o tamanho da imagem ($original_x, $original_y)	list($width, $height) = getimagesize($img);		$original_x = $width;	$original_y = $height;		// se a largura for maior que altura	if($original_x > $original_y) {	   $porcentagem = (100 * $max_x) / $original_x;	  	}	else {	   $porcentagem = (100 * $max_y) / $original_y;  	}		$tamanho_x = $original_x * ($porcentagem / 100);	$tamanho_y = $original_y * ($porcentagem / 100);		$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);	$image   = imagecreatefromjpeg($img);	imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);			return imagejpeg($image_p, $nome_foto, 100);}
Créditos ao Fabyo porque peguei de uma classe de sua autoria. (não encontrei o link aqui agora)

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve fazer algo assimreduz_imagem(IMAGEM, MAX X, MAX Y, NOME FOTO);

Compartilhar este post


Link para o post
Compartilhar em outros sites

aki comigo nao deu ccerto a funcao, uso php 5...usei assim:como o amigo d cima disse usar round para arredondar a porcentagem<?php function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = round((100 * $max_x) / $original_x); } else { $porcentagem = round((100 * $max_y) / $original_y); } $tamanho_x = round($original_x * ($porcentagem / 100)); $tamanho_y = round($original_y * ($porcentagem / 100)); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100);}$img = "galeriaflash/fotos/301.jpg";$nome = "alguma";echo reduz_imagem("galeriaflash/fotos/301.jpg", 200, 300, "alguma");?>e so aparece o numero um...

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo reduz_imagem("galeriaflash/fotos/301.jpg", 200, 300, "alguma");

 

o ultimo item da funçao você tem q colocar a extençao do arqui.. tipo.: alguma.jpg ou gif ou png se for o caso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, de qq forma, não sei como isso funciona, mas vale lembrar que a renderização das imagens via código, seja ele qual for, se é JS, se é HTML, PHP, ASP, etc., não é mto bom não... O ideal é se trabalhar com as imagens em seu tamanho certo...Claro, posso estar enganado qto a isso, eu nc testei essas funções, depois posso até ver e tals, mas acredito q o resultado final seja de maneira semelhante a renderização de imagens via PHP (ou qq outra linguagem) à renderização via HTML (ou CSS)... Ou seja, não fica mto bom naum... (Na minha opinião, claro...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa funçao faz uma nova imagem paulo, com a biblioteca gd,, nao ha distorçao ou perca de qualidade nenhuma se bem configurada,, eu uso mto disso.... alias os sites q manipulam imagem nao vivem sem isso.... visto q esses esquemas otimizam o site ... eu sempre aconselho o tratamento..... de img qndo necessario

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa funçao faz uma nova imagem paulo, com a biblioteca gd,, nao ha distorçao ou perca de qualidade nenhuma se bem configurada,, eu uso mto disso.... alias os sites q manipulam imagem nao vivem sem isso.... visto q esses esquemas otimizam o site ... eu sempre aconselho o tratamento..... de img qndo necessario

Mas pelo q entendo, você tem uma imagem de tamanho XXX e YYY, certo? Essas funções não fazem algo do tipo, pegar essa imagem de tamanho XXX e YYY e a "transformam" em X e Y, por exemplo? Sendo assim, você está manipulando uma imagem q supostamente é maior, e o q eu digo qto à renderização é justamente isso: reduzir ou aumentar o tamanho somente pelas propriedades dela não funciona mto bem...Mas pelo q você me falou, vou ver se consigo analisar esse script... Não conheço PHP... Absolutamente nada... Então, pode ser q eu tenha uma certa dificuldade (naturalmente... rsrs) Mas vlw pelas dicas!(Preciso estudar um pouco mais sobre essas bibliotecas de imagens... Elas existem tb em ASP? Tô caindo mais pra esse último... Comecinho... Mas um dia chego lá... rsrs) Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

lamento informar, mas paulo esta certo, tentem usar esta funcao com uma imagem peq pra "ampliar" ela, ela fica toda distorcida, so fica bem com reducao de imagem...sera q tem alguma funcao para ampliar e reduzir ao mesmo tempo....?

Compartilhar este post


Link para o post
Compartilhar em outros sites

lamento informar, mas paulo esta certo, tentem usar esta funcao com uma imagem peq pra "ampliar" ela, ela fica toda distorcida, so fica bem com reducao de imagem...sera q tem alguma funcao para ampliar e reduzir ao mesmo tempo....?

Meu caro Igor.php, naturalmente, nesse caso, ela vai mesmo ficar distorcida, porque você já tem uma imagem com uma resolução X e você quer deixá-la com XX. Se você aumentar essa imagem, seja lá qual for o método, se é na própria imagem (no Photoshop, por exemplo, aumentar no Image Size), seja via código (qualquer um, JS, HTML, PHP...), você vai ter uma perda da qualidade porque a "nova imagem" gerada estará interpolada... Ou seja, serão criados "novos pixels" baseados em cálculos matemáticos, mas que não fazem parte da imagem original...

 

O que quero dizer é que a qualidade depende da resolução da mesma... Não tem jeito... Mas a principal questão nem é tanto essa, porque mesmo se eu tiver uma imagem grande e quiser deixá-la menor via código, a renderização da imagem não vai ser de boa qualidade! Isso porque os browsers não são softwares gráficos! Eles não têm capacidade de interpolar as imagens! O que eles fazem é uma "meia interpolação", um quebra galho digamos, mas que de qualquer maneira, o resultado é horrível...

 

Por isso reforço a idéia de que, se você quer trabalhar com manipulção de imagens, o ideal é que você tenha as mesmas já no disco com seus respectivos tamanhos, definidos em um software gráfico...

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está ocorrendo este erro.Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 9216 bytes) in C:\Arquivos de programas\VertrigoServ\www\paginas\cotacao\TMP54mmsg1htp.php on line 25O código é este:<?echo reduz_imagem("DSC00216.JPG", 100, 200, "alguma.jpg");function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100);}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.