Jump to content


Photo

Arredondar Cantos De Uma Imagem, Tem Como?


  • Faça o login para participar
13 replies to this topic

#1 _tHeFlAsH_

_tHeFlAsH_

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 02/01/2006, 14:59

olá pessoal

tenho uma dúvida: é possivel arredondar os cantos de uma imagem com php?

exemplo: tenho uma imagem de 119x90 e quero deixar a bordar redonda. como posso fazer?

tentei fazer já de um outro jeito, que foi deixando a foto como fundo da tabela e jogando uma imagem com as bordas e fundo transparente por cima, mais as bordas ficam serrilhadas dai nem rolo

podem me ajudar?

valeuu
Glauco Maschio
www.glaucomaschio.com.br

#2 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 02/01/2006, 16:32

Tem sim mas neste momento nao me lembro o nome da funcao...

Falopa!

#3 goiaba2000

goiaba2000

    Tô com sono!

  • Usuários
  • 1118 posts
  • Sexo:Não informado
  • Localidade:Sobradinho-DF

Posted 02/01/2006, 17:25

eu resolvi isso criando uma maskara png que imprime em cima da imagem... da uma olhada em ibrad.org.br p vc ver o resultado
PHP + UML + OO + Flash + MySQL = IMBATIVEL

http://www.guilardi.com.br
- portifólio
http://www.deusehmais.com.br
- projeto atual

#4 _tHeFlAsH_

_tHeFlAsH_

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 03/01/2006, 07:46

fico legal cara

eu tentei em png, mais não consegui deixar transparente.

você salvo como png ou exporto como png 32 ?

abraço,
Glauco Maschio
www.glaucomaschio.com.br

#5 snkneo

snkneo

    Normal

  • Usuários
  • 118 posts
  • Sexo:Não informado
  • Localidade:Brazil
  • Interesses:Girls, Sexo, Games

Posted 19/09/2006, 20:49

alguem saberia explicar como proceder?

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 19/09/2006, 22:26

Segue abaixo uma demonstração usando tão somente a biblioteca Gd.

<?php

	 /**
	  * @author: Felipe Nascimento Silva Pena ( Eclesiastes )
	  */

	 header('Content-type: image/png');

	 // Definições dimensionais
	 define('IMG_W', 400);
	 define('IMG_H', 400);
	 
	 // Criando uma imagem
	 $img = imagecreate(IMG_W, IMG_H);

	 // Criando uma cor
	 $bgcolor = imagecolorallocate($img, 100, 100, 100);
	 
	 // Pintando o fundo
	 imagefilledrectangle($img, 0, 0, IMG_W, IMG_H, $bgcolor);
	 
	 // Elipse transparente
	 imagefilledellipse($img, 0, 0, 100, 100, imagecolorallocatealpha($img, 255, 255, 255, 127));

	 // Elipse com a cor do fundo
	 imagefilledellipse($img, 50, 50, 100, 100, $bgcolor);

	 imagepng($img);
	 imagedestroy($img);
	 
?>

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#7 snkneo

snkneo

    Normal

  • Usuários
  • 118 posts
  • Sexo:Não informado
  • Localidade:Brazil
  • Interesses:Girls, Sexo, Games

Posted 20/09/2006, 00:10

tem como dar uma comentada?
tipo, da onde eu mando a imagem q vai ser upada?

hehe
thanks

Edição feita por: snkneo, 20/09/2006, 00:16.


#8 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 20/09/2006, 07:52

Funções usadas:

// DEFINE UMA CONSTANTE
http://br.php.net/ma...tion.define.php

// CRIA UMA IMAGEM
http://br.php.net/ma...imagecreate.php

// ALOCA UMA COR PARA IMAGEM CRIADA ACIMA
http://br.php.net/ma...lorallocate.php

// DESENHA UM RETÂNGULO PRENCHIDO
http://br.php.net/ma...edrectangle.php

// DESENHA UM ECLIPSE PRENCHIDO - não conhecia esta função
http://br.php.net/ma...lledellipse.php

// CRIA/ENVIA UMA IMAGEM PARA O BROWSER OU PARA O ARQUIVO
http://br.php.net/ma...on.imagepng.php

// DESTROI A IMAGEM GERADA PELA FUNÇÃO IMAGECREATE()
http://br.php.net/ma...magedestroy.php

Fonte: http://br.php.net/ma...pt_BR/index.php

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#9 snkneo

snkneo

    Normal

  • Usuários
  • 118 posts
  • Sexo:Não informado
  • Localidade:Brazil
  • Interesses:Girls, Sexo, Games

Posted 20/09/2006, 09:09

sim... essa parte eu ja tinha visto tudo no manual....



porem,

pelo q entendi isso aki me cria apenas a imagem arredondada vazia com a cor especificada, nao eh isso?


ker dizer.. depois disso tenho q jogar em cima da original? ou tem como eu arredondar uma imagem direto ?

Edição feita por: snkneo, 20/09/2006, 09:34.


#10 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 20/09/2006, 09:49

Você precisa primeiro definir o tamanho da imagem, e depois jogar essa imagem vazia com a transparência ;)

se você fizer o contrário, a imagem que você quer que apareça dentro dessa imagem vazia, irá ser jogada acima dessa imagem gerada com a borda modificada...

^^' eu pra explicar sou muicho zero a esquerda :P

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#11 snkneo

snkneo

    Normal

  • Usuários
  • 118 posts
  • Sexo:Não informado
  • Localidade:Brazil
  • Interesses:Girls, Sexo, Games

Posted 20/09/2006, 10:24

certo.. entendi agora... porem.. to tentando fazer com os outros cantos... mas nao consigo inverter a elipse :S

a bola fica ao contrario hehe...

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));
}


#12 wawasurf

wawasurf

    Wawasurf

  • Usuários
  • 257 posts
  • Sexo:Masculino
  • Localidade:Criciuma

Posted 04/06/2008, 15:36

A váriavel $foto, ela vem do formulario que digo qual é imagem para fazer o arredondamento? Tipo, faço um form para escolher a imagem e depois dou um action para esse código que dai ele faz o arredondamento naum é?

Segue abaixo uma demonstração usando tão somente a biblioteca Gd.

CODE
<?php

	 /**
	  * @author: Felipe Nascimento Silva Pena ( Eclesiastes )
	  */

	 header('Content-type: image/png');

	 // Definições dimensionais
	 define('IMG_W', 400);
	 define('IMG_H', 400);
	
	 // Criando uma imagem
	 $img = imagecreate(IMG_W, IMG_H);

	 // Criando uma cor
	 $bgcolor = imagecolorallocate($img, 100, 100, 100);
	
	 // Pintando o fundo
	 imagefilledrectangle($img, 0, 0, IMG_W, IMG_H, $bgcolor);
	
	 // Elipse transparente
	 imagefilledellipse($img, 0, 0, 100, 100, imagecolorallocatealpha($img, 255, 255, 255, 127));

	 // Elipse com a cor do fundo
	 imagefilledellipse($img, 50, 50, 100, 100, $bgcolor);

	 imagepng($img);
	 imagedestroy($img);
	
?>

Tenho esse código aqui, mais naum esta dando certo, o q sera q tem de errado? Quando eu envio a imagem a tela fica em branco, não aparece nenhum erro!

<form id="form" method="post" action="" enctype="multipart/form-data">
  <label>
  <input name="foto" type="file" id="foto" value="" />
  </label>
  <label>
  <input type="submit" name="button" id="button" value="Submit" />
  </label>
</form>
</body>
</html>
<? 
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));
	  }
echo"<img src=\"$foto\" />";

?>

Wagner Machado Martins
Webmaster
Agência Gigante
Criciúma - SC

#13 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 04/06/2008, 15:43

que desenterrada hein!

Mas isso vai ser util pra mim ^_^ eu estava atrás disso e meu tópico nao deram muita importância :P

valeu (y)

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#14 wawasurf

wawasurf

    Wawasurf

  • Usuários
  • 257 posts
  • Sexo:Masculino
  • Localidade:Criciuma

Posted 04/06/2008, 15:56

Poiseh cara, to precisando disso dai fui na busca e achei esse tópico, pra naum abrir outro, contunuei esse aqui mesmo, você sabe o q estou fazendo de errado no código para naum aparecer a imagem?
Wagner Machado Martins
Webmaster
Agência Gigante
Criciúma - SC




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq