Jump to content


Photo

Trabalhando Com Imagens No Php


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

#1 H3NR!QU3

H3NR!QU3

    Progamador PHP!

  • Usuários
  • 1032 posts
  • Sexo:Não informado
  • Localidade:cuiaba MT
  • Interesses:programação... PHP,JAVA,C++ ,c,c# asp, asp.net e delph

Posted 17/01/2005, 21:25

ola galera no tutorial passado eu insinei inserir,deletar,exibir,editra registros do banco de dados veja o tutorial : http://forum.wmonlin...howtopic=103227


HJ ensinasei a vcs como cria thumbs e depois exibila e depois deletala :)
Desta vez nao ira envolver banco de dados B)

antes de tudo vc tera que criar uma pasta chamada imagem ela servira pra guardar as minaturas criada


vamos lah

1º passo crie uma pagina chamada
index.php

<form action="cria.php" method="POST" enctype="multipart/form-data">
  <table width="623" border="0" cellspacing="1" bgcolor="#CCCCCC">
    <tr bgcolor="#FFFFFF">
      <td align="center"><font color="#666666" size="1" face="verdana"><strong>Imagem:</strong></font></td>
      <td><font color="#FFFFFF">
        <input type="file"name="arquivo">
        </font></td>
    </tr>
    <tr bgcolor="#FFFFFF">
      <td width="73" align="center"><font color="#666666" size="1" face="verdana">&nbsp;</font></td>
      <td width="543"><input type="submit" name="Submit" value="criar thumb"></td>
    </tr>
  </table>
</form>

na index.php nois temos apenas o formulario para buscar a imagem nao tem nada di php nela :)

agora vamos pra pagina chamada cria.php que sera responsavel por criar os thumbs (y) vamos ao codigo

PHP

<? ob_start(); ?>
<?
$imagem
= $_FILES[arquivo][tmp_name]; //pegando a url da iamgem que sera criada a minatura
$nome = $_FILES[arquivo][name]; // pegando o nome d aimagem
$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 120; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
imagejpeg($nova,"imagem/$nome");//salva a imagem cria na pasta imagem
imagedestroy($nova);//libera a memoria usada na miniatura
imagedestroy($im);//libera a memoria usada na amostra
header("location:exibi.php"); //redireciona para a pagina que exibe as imagens  do diretorio
?>
<? ob_end_flush
(); ?>

pronto eu comentei tudim função por função agora iremos pra pagina que exibe as imagens do diretorio ela se chamara exibi.php
vamos ao codigo:
PHP


<form name="form1" method="post" action="apagar.php"><p>
  <table width="685" border="0" cellspacing="0">
    <tr>
      <td height="21" valign="top"><?
$dir
="imagem/"; //nome da pasta que ira listar
$handle = opendir($dir);// abrindo a pasta
while ($res=readdir($handle)){//lendo o conteudo dela para ser listado
$ext=explode(".",$res);// pegando a extenção das imagens da pasta imagens
echo ($ext[count($ext)-1]=="jpg") ? "<img src='$dir$res'><input type='radio' name='apagar' value='$res'><br>
    "
: "";// imprimindo as imagens do diretorio na tela
}
?></td>
    </tr>
    <tr>
      <td width="268"><input type="submit" name="Submit" value="apagar imagens"></td>
    </tr>
  </table>
</form>

pronto agora exibimos as imagens do diretorios agora vamos fazer a parti di apagar as iamgens listadas :)
essa pagina se chamara apagar.php
vamos ao codigo
PHP

<? ob_start(); ?>
<?
$imagem
= $_POST['apagar']; // pegando o nome da imagem a ser apagada
unlink("imagem/$imagem"); //apagando a imagem
header("location: exibi.php"); // redirecionando pra pagina exibi.php
?>
<? ob_end_flush
(); ?>

pronto galera so isso
simples não é??? :)

quem quiser ver o script funcionando tha aqui o link
http://cristian.inte...topdesig/teste/

quem quiser fazer o download ta ai

Attached Files



#2 kelme

kelme

    12 Horas

  • Usuários
  • 262 posts
  • Sexo:Não informado

Posted 21/01/2005, 11:18

Como eu faço para, além da imagem _thumb, sobrar também na pasta lá no servidor a imagem original? Basta acrescentar uma letrinha no nome do arquivo, na seguinte linha de comendo:

imagejpeg($nova,"imagem/$nome");

??? Ou será que o procedimento é mais complicado?

Na página de exibição linkar a miniatura com a respectiva imagem original, mas com algum código que abra uma pop-up só com a imagem original, seja ela do tamanho que for, como acontece na GALERIA BRASIL, saca? Tem como? Ou é muito complicado para um novato como eu?

Saulo.

#3 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 23/01/2005, 10:17

Assim você irá salvar a imagem que você fez....
Que no caso é a miniatura.


Para mandar a original pra uma pasta conheça a função:
move_uploaded_file()


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

#4 kelme

kelme

    12 Horas

  • Usuários
  • 262 posts
  • Sexo:Não informado

Posted 23/01/2005, 23:36

Tá legal, mas o que eu queria era o seguinte, na MESMA PASTA, além do _thumb (miniatura) do exemplo do nosso caro Henrique_cba, ficar também com a imagem original, e depois colocar um link no thumb, que abra a imagem original, entendem?

Alguém ai sabe como fazer? Saulo.

#5 H3NR!QU3

H3NR!QU3

    Progamador PHP!

  • Usuários
  • 1032 posts
  • Sexo:Não informado
  • Localidade:cuiaba MT
  • Interesses:programação... PHP,JAVA,C++ ,c,c# asp, asp.net e delph

Posted 02/02/2005, 02:02

assim


<? ob_start(); ?>
<?
$imagem = $_FILES[arquivo][tmp_name]; //pegando a url da iamgem que sera criada a minatura
$nome = $_FILES[arquivo][name]; // pegando o nome d aimagem
$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 120; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
imagejpeg($nova,"imagem/$nome");//salva a imagem cria na pasta imagem
imagedestroy($nova);//libera a memoria usada na miniatura
imagedestroy($im);//libera a memoria usada na amostra
copy($imagem,"imgoriginal/$nome);
header("location:exibi.php"); //redireciona para a pagina que exibe as imagens  do diretorio
?>
<? ob_end_flush(); ?>



cria uma pasta agora com o nome imgoriginal


T+ (y)

#6 jcrjj

jcrjj

    Turista

  • Usuários
  • 53 posts
  • Sexo:Masculino

Posted 06/02/2005, 21:10

Henrique,

Não consegui botar pra funcionar.. tá dando o seguinte erro:

Warning: Cannot modify header information - headers already sent by (output started at /home/dinamus/public_html/galeria/galeria_new/cria.php:9) in /home/dinamus/public_html/galeria/galeria_new/cria.php on line 23

Poderia me ajudar? (y)

Abraços!

#7 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 06/02/2005, 21:54

Você está utilizando o ob_start() no começo e ob_end_flush() no final do arquivo cria.php?
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#8 jcrjj

jcrjj

    Turista

  • Usuários
  • 53 posts
  • Sexo:Masculino

Posted 06/02/2005, 22:18

fnsp,

Sim, o arquivo está assim:

<html>
<head>
<title>:: - ::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<? ob_start(); ?>
<?
$imagem = $_FILES[arquivo][tmp_name]; //pegando a url da iamgem que sera criada a minatura
$nome = $_FILES[arquivo][name]; // pegando o nome d aimagem
$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 120; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
imagejpeg($nova,"imagem/$nome");//salva a imagem cria na pasta imagem
imagedestroy($nova);//libera a memoria usada na miniatura
imagedestroy($im);//libera a memoria usada na amostra
header("location:exibi.php"); //redireciona para a pagina que exibe as imagens  do diretorio
?>
<? ob_end_flush(); ?>

</body>
</html>


Obrigado pela atenção!

#9 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 06/02/2005, 22:37

O certo é:

<? ob_start(); ?>
<html>
<head>
<title>:: - ::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?
$imagem = $_FILES[arquivo][tmp_name]; //pegando a url da iamgem que sera criada a minatura
$nome = $_FILES[arquivo][name]; // pegando o nome d aimagem
$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 120; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
imagejpeg($nova,"imagem/$nome");//salva a imagem cria na pasta imagem
imagedestroy($nova);//libera a memoria usada na miniatura
imagedestroy($im);//libera a memoria usada na amostra
header("location:exibi.php"); //redireciona para a pagina que exibe as imagens  do diretorio
?>

</body>
</html>
<? ob_end_flush(); ?>


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

#10 jcrjj

jcrjj

    Turista

  • Usuários
  • 53 posts
  • Sexo:Masculino

Posted 06/02/2005, 23:30

FNSP,

Primeiramente, obrigado pela ajuda... Era isso mesmo!
Agora, sem querer abusar, mas já abusando, como eu faria para, ao invés de salvar os thumbs na pasta "imagem", salvar na pasta "pequenas"? Já alterei os nomes em "cria.php", "exibi.php" e "apagar.php", mas depois de incluir ele vai para o "exibi.php" todo em branco.

Abusando mais ainda, existe ainda alguma forma de fazer um sistema com o seguinte processo:
1) Escolho uma foto qualquer em meu PC com um tamanho 640x480, 1280x960 etc...
2) Ele cria uma foto 400x300 na pasta grandes
3) Ele inclui uma marca em determinada posição da foto grande?
4) Ele cria uma foto 90x68 na pasta pequenas
Tudo isso apenas selecionando a foto original da mesma forma desse sistema atual, pelo index.php

Se puder ajudar, desde já agradeço. Quanto ao novo sistema que estou propondo, se ele fizesse pelo menos os processos 1, 2 e 4 já quebraria um galhão... (y)

Abraços!

Edição feita por: jcrjj, 06/02/2005, 23:31.


#11 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 06/02/2005, 23:40

Assim salvará na pasta pequenas/

<? ob_start(); ?>
<html>
<head>
<title>:: - ::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?
$imagem = $_FILES[arquivo][tmp_name]; //pegando a url da iamgem que sera criada a minatura
$nome = $_FILES[arquivo][name]; // pegando o nome d aimagem
$im = imagecreatefromjpeg($imagem); //criar uma amostra da imagem original
$largurao = imagesx($im);// pegar a largura da amostra
$alturao = imagesy($im);// pegar a altura da amostra
$alturad = 120; // definir a altura da miniatura em px
$largurad = ($largurao*$alturad)/$alturao;// calcula a largura da imagem a partir da altura da miniatura
$nova = imagecreatetruecolor($largurad,$alturad);//criar uma imagem em branco
imagecopyresampled($nova,$im,0,0,0,0,$largurad,$alturad,$largurao,$alturao);//copiar sobre a imagem em branco a amostra diminuindo conforma as especificações da miniatura
imagejpeg($nova,"pequenas/$nome");//salva a imagem cria na pasta imagem
imagedestroy($nova);//libera a memoria usada na miniatura
imagedestroy($im);//libera a memoria usada na amostra
header("location:exibi.php"); //redireciona para a pagina que exibe as imagens  do diretorio
?>

</body>
</html>
<? ob_end_flush(); ?>


O resto tem tudo no fórum...
Tutoriais do thiagorsl e do henrique_cba.

Só ler que entendarás.
[]'s
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#12 jcrjj

jcrjj

    Turista

  • Usuários
  • 53 posts
  • Sexo:Masculino

Posted 07/02/2005, 00:29

Deu errado! :(

De qquer maneira, valeu!

#13 jinyam

jinyam

    Normal

  • Usuários
  • 69 posts
  • Sexo:Não informado

Posted 07/02/2005, 00:57

Henrique_cba
(y) (y) (y) (y) (y) (y)

#14 H3NR!QU3

H3NR!QU3

    Progamador PHP!

  • Usuários
  • 1032 posts
  • Sexo:Não informado
  • Localidade:cuiaba MT
  • Interesses:programação... PHP,JAVA,C++ ,c,c# asp, asp.net e delph

Posted 11/02/2005, 13:40

Henrique_cba
(y) (y) (y) (y) (y) (y)

:D

#15 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 01/03/2005, 10:13

Ae Henrique_cba,


Fico doido so de ver as coisas que tu posta neste forum[Show de bola c e manu]

Mas deixando o fanatismo de lado...

Como e que eu faria pra por isso no db? E que eu criei um tuto de classificados mas nao criei a parte de por as fotos do produto mesmo assim eu ja terminei e queria colocar nele uma imagem pra ficar mais leal saka?


Da uma mao ae



Falopa!

Edição feita por: hostdesigner, 01/03/2005, 10:14.





0 user(s) are reading this topic

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

IPB Skin By Virteq