wawasurf Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 Tem como o PHP pegar uma imagem vinda de um formulario e arredondar os cantos dela e grava-la no servidor? Talvez de pra usar a biblioteca GD né? Mais como faço isso?Valeuu Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 Tenho esse código aqui, mais não 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 padrão, 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\" />"; ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 tem sim, você pode criar uma borda em png, dos 4 lados, de fundo transparente..utilizar imagecreatefrompng() para criar a imagem e imagecopy() para fundir as imagens..obs.: caso o tamanho das imagens recebidas do formulário não seja fixo, você vai precisar fazer umas continhas em php..abraços.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 (editado) Eu tenho um código que faz o q voce falou, brother, da uma olhada ali no post de cima!! Só q não esta aparecendo a imagem, sabe porque?Valeu Editado Junho 4, 2008 por wawasurf Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 só tem uma função (ImageRectangleWithRoundedCorners) ali de enfeite e sem uso.. por isso não aparece nada..você tem que capturar a imagem utlizando $_FILES["foto"]e o script esta sendo iniciado sem o upload da foto.. para facilitar sua vida, faz o form em uma página e o php em outra.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 Fiz em arquivos separados como você falou e também tirei a função sem uso. Agora aparace bastante erro, olha sócomo ficou o código<? $foto = $_FILES["foto"]; // variaveis padrão, 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"$foto <img src=\"$foto\" />"; ?>esses são os erros que esta dandoWarning: imagecreatefromjpeg(Array) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 7Warning: imagesx(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 10Warning: imagesy(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 11Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 18Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 21Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 24Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 25Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 28Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 29Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 32Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 33Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 34Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 35Warning: imagecopy(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 38Warning: imagepng(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 41 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 (editado) hauaha não é pra tirar a função e sim por ela para funcionar..cria uma página chamada teste.php e coloca isso dentro:<form id="form" method="post" action="teste.php" enctype="multipart/form-data"> <input type="hidden" name="form" value="ok" /> <label> <input name="foto" type="file" id="foto" value="" /> </label> <label> <input type="submit" name="button" id="button" value="Submit" /> </label> </form> <?php if($_POST['form']=="ok"){ $uploadimg=$_FILES['foto']; function ImageRectangleWithRoundedCorners($foto) { // variaveis padrão, 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)); } ImageRectangleWithRoundedCorners($uploadimg); echo"<img src=\"$foto\" />"; } ?>não sei se vai funcionar fiz a olho.. testa ai.. Editado Junho 4, 2008 por Vampyro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 (editado) esta dando erro aqui:$foto = imagecreatefromjpeg($foto);Warning: imagecreatefromjpeg(Array) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/admin/public_html/testes/foto_arredondada_php/teste.php on line 21Achu que não esta achando a imagem né? Editado Junho 4, 2008 por wawasurf Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 la em cima eu colequei assim$uploadimg=$_FILES['foto']['tmp_name'];Eu coloquei o arquivo da foto por ftp no servidor pra ele achar a imagem, dai o resultado foi esse‰PNG IHDRÈ–¾PNIDATxœíÚ[rª@EQÈXoF•ÁöýЊÆ6MXkHUï: ÉXJÞm¿ß}{SÊÏ{o`|KXJZÙú–˜>Ä:‘–¤>P:¯`XzÚ„Pa‘°$µ9Ýóê–¤6c^_½.4¨jû:ž`ŸÅ’ÔÎ,Ÿ®‹¥ªýY~¦‹KR»×<]í‹¥ª#h>åÆ°TumgÝ–ªŽ¦áÄg‡¥ªcš{îóÂRÕ‘Í:ýa©ŠújÃR'•%T…¥*®Õôð:,Uqïe/ÂRÏL·Ñó¿à×TXæŠi…< KUÔxÖ‰G!Ã2WÔ{X˃°TÅ\÷Íxq–¹¢ÍM9‹ˆ?a™+–¸îÇb!,".ay²ÜoE‹ˆsXæŠ^N-Y,"„E„°ˆK)^°èÎb!,"„E„°ˆ‡áß»ï²XD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆø*åçÝ÷ÀY,"„E„°ˆ_Ã0x§¯R~,Â"BXDœÃòšE/§–,—°ŒËýVd±ˆÂò4d‰ë~,·a-ÚÜ”c±ˆx–Ñb®ûf/–¶¨÷°B"ž†e´¨não¬“©ÅÒÓ& não($âEXF‹g¦Ûx½XÚâÞË*ª…ÚâZMµïXÚ⤲„/ïÚ¢¾yß µud³NöÏ Ú:¦¹çÞò;–¶Ž¦áÄ ÕÖq´uû/ïÚ:‚æSK)?{¿^´p8:üÐtíÏò3í°X—k™®íë5=ÿ»Átm]Çì¹X—‹š®é> ‘°Î—–ׄž3Á°.Ÿ¡°Ï“~oY#¬ó'Éë3¬ó*¼^X>UdëZÿ{Õ"ä~•6¯/IEND®B`‚ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 (editado) substitui isso lá do começo do script:$uploadimg = $_FILES["foto"];por isso:$uploadimg = $_FILES['foto']['tmp_name']; Editado Junho 4, 2008 por Vampyro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 Trocquei ali emcima e esse foi o resultado:‰PNG IHDRÈ–¾PNIDATxœíÚ[rª@EQÈXoF•ÁöýЊÆ6MXkHUï: ÉXJÞm¿ß}{SÊÏ{o`|KXJZÙú–˜>Ä:‘–¤>P:¯`XzÚ„Pa‘°$µ9Ýóê–¤6c^_½.4¨jû:ž`ŸÅ’ÔÎ,Ÿ®‹¥ªýY~¦‹KR»×<]í‹¥ª#h>åÆ°TumgÝ–ªŽ¦áÄg‡¥ªcš{îóÂRÕ‘Í:ýa©ŠújÃR'•%T…¥*®Õôð:,Uqïe/ÂRÏL·Ñó¿à×TXæŠi…< KUÔxÖ‰G!Ã2WÔ{X˃°TÅ\÷Íxq–¹¢ÍM9‹ˆ?a™+–¸îÇb!,".ay²ÜoE‹ˆsXæŠ^N-Y,"„E„°ˆK)^°èÎb!,"„E„°ˆ‡áß»ï²XD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆÂ"BXD‹a!,"„E„°ˆø*åçÝ÷ÀY,"„E„°ˆ_Ã0x§¯R~,Â"BXDœÃòšE/§–,—°ŒËýVd±ˆÂò4d‰ë~,·a-ÚÜ”c±ˆx–Ñb®ûf/–¶¨÷°B"ž†e´¨não¬“©ÅÒÓ& não($âEXF‹g¦Ûx½XÚâÞË*ª…ÚâZMµïXÚ⤲„/ïÚ¢¾yß µud³NöÏ Ú:¦¹çÞò;–¶Ž¦áÄ ÕÖq´uû/ïÚ:‚æSK)?{¿^´p8:üÐtíÏò3í°X—k™®íë5=ÿ»Átm]Çì¹X—‹š®é> ‘°Î—–ׄž3Á°.Ÿ¡°Ï“~oY#¬ó'Éë3¬ó*¼^X>UdëZÿ{Õ"ä~•6¯/IEND®B`‚ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 (editado) beleza.. agora só salvar a imagem..utilize isso:// Pega extensão do arquivopreg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $_FILES["foto"], $ext);// Gera um nome único para a imagem$imagem_nome = md5(uniqid(time())) . "." . $ext[1];// Caminho de onde a imagem ficará$imagem_dir = "fotos/" . $imagem_nome;// Faz o upload da imagemmove_uploaded_file($uploadimg, $imagem_dir); Editado Junho 4, 2008 por Vampyro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 4, 2008 Autor Denunciar Share Postado Junho 4, 2008 ele gravou um arquivo binariofd711eb656234c60a4f26d0806d51e4a Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RodrigoGomes Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 certo..substitui essa parte:$imagem_nome = md5(uniqid(time()));por isso:$imagem_nome = md5(uniqid(time())) . "." . $ext[1];eu havia me esquecido da extenção.. xPcreio que agora funciona.. abraços.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 Onde você achou esse código?Até fiz funcionar, só que deu um resultado totalmente inesperado, pelo menos para mim, a foto fica por baixo de um retangulo com cantos aredondados e de cor solida. Ou seja não aparece! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ândres Postado Junho 4, 2008 Denunciar Share Postado Junho 4, 2008 tem uma formulazinha em ajax também------------------------criação de sitesrenovar sitedesenvolvimento de site Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wawasurf Postado Junho 5, 2008 Autor Denunciar Share Postado Junho 5, 2008 Bah Vampyro, ainda vai com arquivo binario!! :huh: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JCMPJ Postado Junho 5, 2008 Denunciar Share Postado Junho 5, 2008 Não sei se a imagem pode ser gerada corretamente a partir do arquivo temporario, melhor gravar ele em uma pasta qualquer, trabalhar em cima desse arquivo e se for o caso apaga-lo depois. Mesmo porque o PHP tem que confirmar se o arquivo temporario realmente provém de um upload.imagepng(imagem) envia a imagem direto para o brawser cliente. Se enviar um Header correto acredito que não vai mais aparecer essa sequencia maluca de caracteres.Se quizer gravar a imagem use imagepng(imagem, arquivo)Como está o código, acontece o que escrevi ai em cima. A foto fica atras de um retangulo.Pra mim a melhor ideia é a do companheiro que disse para criar um retangulo transparente e desenhar os quatro cantos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
wawasurf
Tem como o PHP pegar uma imagem vinda de um formulario e arredondar os cantos dela e grava-la no servidor? Talvez de pra usar a biblioteca GD né? Mais como faço isso?
Valeuu
Link para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.