Ir para conteúdo

POWERED BY:

Arquivado

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

Ariel

Arredondar cantos de imagem

Recommended Posts

Necessito saber como proceder para arredondar os cantos de uma imagem enviada por um formulario.

 

Alguem sabe como devo fazer?

 

Situacao: nao se sabe o tamanho da imagem que sera enviada. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

grato por qq ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não posso ajudar muito, mas tente ler isso aqui:

http://br.php.net/gd

 

Toda imagem é retangular, para arredondar os cantos, acho q você precisa criar 1 imagem transparente separadamente (no Photoshop ou no Gimp), que será os cantos arredondados. Aí você vai girando essa imagem e vai mesclando com os cantos da foto.

Nunca fiz isso, mas acho q é assim q deve ser feito.

 

Para saber o tamanho da foto use imagesx() e imagesy().

Compartilhar este post


Link para o post
Compartilhar em outros sites

thiago,, explica ae as variaveis, please

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.... entendi e fiz as modificacoes necessarias...

 

ele cria os cantos arredondados e tal... porem,

 

nao to sabendo como mesclar a foto original com a imagem q acabei de criar...

 

function ImageRectangleWithRoundedCorners($foto){	 // variaveis padrao, inicio no topo x1,y1, e raio da elipse	 $x1 = 0; $y1 = 0; $radius = 50;	 // pegar a foto enviada e usa o comando pra criar	 $foto = imagecreatefromjpeg($foto);	 // pegar largura e altura da foto	 $largura_origin = imagesx($foto);	 $altura_origin = imagesy($foto);	 // define que o novo tamanho- é o mesmo da foto original	 $x2 = $new_width = $largura_origin;	 $y2 = $new_height = $altura_origin;	 // cria imagem vazia	 $im = imagecreatetruecolor($largura_origin,$altura_origin);	 // Criando uma cor	 $color = imagecolorallocate($im, 0, 0, 100);	 // Pintando o fundo com a cor branca	 $bgcolor = imagecolorallocate($im, 255, 255, 255); // fundo branco	 imagefilledrectangle($im, 0, 0, $largura_origin, $altura_origin, $bgcolor);   // Draw rectangle without corners   ImageFilledRectangle($im, $x1+$radius, $y1, $x2-$radius, $y2, $color);   ImageFilledRectangle($im, $x1, $y1+$radius, $x2, $y2-$radius, $color);   // Draw circled corners   ImageFilledEllipse($im, $x1+$radius, $y1+$radius, $radius*2, $radius*2, $color);   ImageFilledEllipse($im, $x2-$radius, $y1+$radius, $radius*2, $radius*2, $color);   ImageFilledEllipse($im, $x1+$radius, $y2-$radius, $radius*2, $radius*2, $color);   ImageFilledEllipse($im, $x2-$radius, $y2-$radius, $radius*2, $radius*2, $color);   //copiar sobre a imagem em branco a amostra diminuindo conforma as especificacoes   imagecopy($foto, $im , 0 , 0 , 0 ,0 , $new_width , $new_height);   //imagecopyresampled($im,$foto,0,0,0,0, $new_width, $new_height, $largura_origin,$altura_origin);   return (imagepng($foto));}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você podera fazer assim,Faz um script para fazer o upload da foto com dois tamanhos, uma maior e outra menor, por exemplo uma de 500x375 e outro de 60X80, isso com a mesma foto, basta enviar uma foto só e o php trata de fazer os tamanhos da foto. Depois disso, cria uma imagem com canto arredondado no fireworks com fundo transparente do mesmo tamanho q a foto menor. Para colocar a foto com canto aredondado no site, você pega a foto menor e coloca ela como background e a imagem q você fez no fireworks, põe por cima do background, assim a foto ficara com o canto arrendondado, ja fiz isso e deu certo!!Flw t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

dessa forma nao é possivel, por nao saber as dimensoes que a pessoa pode enviar a foto. Que podem ser proporcionais ou nao.Preciso fazer algo para arredondar os cantos de qq imagem... isto é.. se isso for possivel :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse topico nao ajuda em nada.... rsrs .. colocar uma imagem em cima da outra eh simples....mas... fazer o tal canto na imagem...???????????? nao da pra simplesmente eu jogar a imagem gerada no script ai postado por mim, em cima da foto.. pq a imagem gerada vai ter um fundo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda sem solucao... alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

há outro modo que utiliza menos recursos.sem precisar usar phpvocê precisaria apenas usar tabela html.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alteracao na funcao faz tempo mais como estava precisando e verifiquei que nao tinham dado uma resposta final.

 

Incluindo o imagecolortransparent, e ussando o imagecopymerge

 

CODE
function ImageRectangleWithRoundedCorners($foto)

{

// variaveis padrao, inicio no topo x1,y1, e raio da elipse

$x1 = 0; $y1 = 0; $radius = 50;

 

// pegar a foto enviada e usa o comando pra criar

$foto = imagecreatefromjpeg($foto);

 

// pegar largura e altura da foto

$largura_origin = imagesx($foto);

$altura_origin = imagesy($foto);

 

// define que o novo tamanho- é o mesmo da foto original

$x2 = $new_width = $largura_origin;

$y2 = $new_height = $altura_origin;

 

// cria imagem vazia

$im = imagecreatetruecolor($largura_origin,$altura_origin);

 

// Criando uma cor

$color = imagecolorallocate($im, 0, 0, 100);

 

// Pintando o fundo com a cor branca

$bgcolor = imagecolorallocate($im, 255, 255, 255); // fundo branco

imagefilledrectangle($im, 0, 0, $largura_origin, $altura_origin, $bgcolor);

 

// Draw rectangle without corners

ImageFilledRectangle($im, $x1+$radius, $y1, $x2-$radius, $y2, $color);

ImageFilledRectangle($im, $x1, $y1+$radius, $x2, $y2-$radius, $color);

 

// Draw circled corners

ImageFilledEllipse($im, $x1+$radius, $y1+$radius, $radius*2, $radius*2, $color);

ImageFilledEllipse($im, $x2-$radius, $y1+$radius, $radius*2, $radius*2, $color);

ImageFilledEllipse($im, $x1+$radius, $y2-$radius, $radius*2, $radius*2, $color);

ImageFilledEllipse($im, $x2-$radius, $y2-$radius, $radius*2, $radius*2, $color);

imagecolortransparent ( $im, $color);

//copiar sobre a imagem em branco a amostra diminuindo conforma as especificacoes

imagecopymerge($foto, $im , 0 , 0 , 0 ,0 , $new_width , $new_height,100);

//imagecopyresampled($im,$foto,0,0,0,0, $new_width, $new_height, $largura_origin,$altura_origin);

 

return (imagepng($foto));

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alteracao na funcao faz tempo mais como estava precisando e verifiquei que nao tinham dado uma resposta final.

 

Incluindo o imagecolortransparent, e ussando o imagecopymerge

 

CODE
function ImageRectangleWithRoundedCorners($foto)

{

// variaveis padrao, inicio no topo x1,y1, e raio da elipse

$x1 = 0; $y1 = 0; $radius = 50;

 

// pegar a foto enviada e usa o comando pra criar

$foto = imagecreatefromjpeg($foto);

 

// pegar largura e altura da foto

$largura_origin = imagesx($foto);

$altura_origin = imagesy($foto);

 

// define que o novo tamanho- é o mesmo da foto original

$x2 = $new_width = $largura_origin;

$y2 = $new_height = $altura_origin;

 

// cria imagem vazia

$im = imagecreatetruecolor($largura_origin,$altura_origin);

 

// Criando uma cor

$color = imagecolorallocate($im, 0, 0, 100);

 

// Pintando o fundo com a cor branca

$bgcolor = imagecolorallocate($im, 255, 255, 255); // fundo branco

imagefilledrectangle($im, 0, 0, $largura_origin, $altura_origin, $bgcolor);

 

// Draw rectangle without corners

ImageFilledRectangle($im, $x1+$radius, $y1, $x2-$radius, $y2, $color);

ImageFilledRectangle($im, $x1, $y1+$radius, $x2, $y2-$radius, $color);

 

// Draw circled corners

ImageFilledEllipse($im, $x1+$radius, $y1+$radius, $radius*2, $radius*2, $color);

ImageFilledEllipse($im, $x2-$radius, $y1+$radius, $radius*2, $radius*2, $color);

ImageFilledEllipse($im, $x1+$radius, $y2-$radius, $radius*2, $radius*2, $color);

ImageFilledEllipse($im, $x2-$radius, $y2-$radius, $radius*2, $radius*2, $color);

imagecolortransparent ( $im, $color);

//copiar sobre a imagem em branco a amostra diminuindo conforma as especificacoes

imagecopymerge($foto, $im , 0 , 0 , 0 ,0 , $new_width , $new_height,100);

//imagecopyresampled($im,$foto,0,0,0,0, $new_width, $new_height, $largura_origin,$altura_origin);

 

return (imagepng($foto));

}

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.