Ir para conteúdo
Fórum Script Brasil
  • 0

arrendoadar bordas das imagens com php


wawasurf

Pergunta

17 respostass a esta questão

Posts Recomendados

  • 0

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\" />";

?>

Link para o comentário
Compartilhar em outros sites

  • 0

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..

Link para o comentário
Compartilhar em outros sites

  • 0

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..

Link para o comentário
Compartilhar em outros sites

  • 0

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 dando

Warning: 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 7

Warning: imagesx(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 10

Warning: imagesy(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 11

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 18

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 21

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 24

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 25

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 28

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 29

Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 32

Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 33

Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 34

Warning: imagefilledellipse(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 35

Warning: imagecopy(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 38

Warning: imagepng(): supplied argument is not a valid Image resource in /home/admin/public_html/testes/foto_arredondada_php/upload.php on line 41

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Vampyro
Link para o comentário
Compartilhar em outros sites

  • 0

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 21

Achu que não esta achando a imagem né?

Editado por wawasurf
Link para o comentário
Compartilhar em outros sites

  • 0

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Ýóê–¤6­c^_½.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`‚

Link para o comentário
Compartilhar em outros sites

  • 0

Trocquei ali emcima e esse foi o resultado:

‰PNG IHDRÈ–¾PNIDATxœíÚ[rª@EQÈXoF•ÁöýЊÆ6MXkHUï: ÉXJÞm¿ß}{SÊÏ{o`|KXJZÙú­–˜>Ä:‘­–¤>P:¯`XzÚ„Pa‘°$µ9Ýóê–¤6­c^_½.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`‚

Link para o comentário
Compartilhar em outros sites

  • 0

beleza.. agora só salvar a imagem..

utilize isso:

// Pega extensão do arquivo

preg_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 imagem

move_uploaded_file($uploadimg, $imagem_dir);

Editado por Vampyro
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

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!

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...