Ariel 0 Denunciar post Postado Setembro 19, 2006 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
ignorante 0 Denunciar post Postado Setembro 20, 2006 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
Ariel 0 Denunciar post Postado Setembro 20, 2006 thiago,, explica ae as variaveis, please Compartilhar este post Link para o post Compartilhar em outros sites
Ariel 0 Denunciar post Postado Setembro 20, 2006 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
Ariel 0 Denunciar post Postado Setembro 21, 2006 :( Sugestoes? Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Martins - SC 0 Denunciar post Postado Setembro 21, 2006 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
Ariel 0 Denunciar post Postado Setembro 21, 2006 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
Ariel 0 Denunciar post Postado Setembro 21, 2006 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
Ariel 0 Denunciar post Postado Setembro 30, 2006 Ainda sem solucao... alguma dica? Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Outubro 1, 2006 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
Toscano 0 Denunciar post Postado Agosto 22, 2008 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
Toscano 0 Denunciar post Postado Agosto 22, 2008 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