Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ecotuba

Upload multiplo de Imagem, MAS com redimensionamento e thumbnail

Recommended Posts

Amigos

 

Estou estudando um sistema que necessito fazer o seguinte:

  • Upload da img
  • Redimensionar a img
  • criar thumbnail
  • salvar no BD

Até ai td bem, eu estou usando a obra do Fábio aqui do fórum:

(http://forum.imasters.com.br/index.php?showtopic=164120&st=50)

 

Ai me veio a cabeça fazer, e se eu tentar fazer upload multiplo das imagens e continuar com as tarefas que listei acima?

 

Ai pensei nisso:

Aqui informo a qtd de fotos

<form action="vai.php" method="post">

<b>Envio das fotos</b><br />

 

Quantidade de imagens<br />

<input type="text" name="quantidade" size="5"/><br />

<input type="submit" value="OK"/>

</form>

 

Aqui processo essa informação

<?php

// Obtém quantidade enviada. Verifica se foi fornecido um número inteiro,

// caso contrário é usada uma quantidade padrão, 5.

$Quantidade = (isset($_POST['quantidade']) && is_int(intval($_POST['quantidade']))) ? (int)$_POST['quantidade'] : 5;

 

// Abre formulário de upload

echo '<form action="upload.php" method="POST" enctype="multipart/form-data">';

echo '<b>Envio das fotos</b><br />';

 

// Imprime os campos para upload, de acordo com a quantidade pedida

for($i = 1; $i <= $Quantidade; ++$i)

{

echo 'Foto #' . $i . ': <input type="file" name="fotos[]" /><br/>';

}

 

// Fecha formulário

echo '<br /><input type="submit" value="OK"/>';

echo '</form>';

?>

 

E aqui eu travo e peço ajuda a vcs (e ao pai da criança, seu Fábio hehe), o que preciso fazer para adaptar a função que citei no link p/ trabalhar com mais imagens?

 

Tentei algumas coisas, mas sem sucesso.

Alguma sugestão amigos?

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu criei um sistema desse..

se você quiser eu te passo por email... é so você pedir..

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Uelio pelo code, estou adaptando ele aqui, mas estou com dúvidas em como chegar ao resultado que preciso:

 

Minha tabela no bd é a seguinte:

 

CODE
CREATE TABLE `galeria` (

`id` int(11) NOT NULL auto_increment,

`dir` varchar(50) NOT NULL,

`mini` varchar(255) NOT NULL,

`foto` varchar(255) NOT NULL,

`legenda` varchar(100) NOT NULL,

PRIMARY KEY (`id`),

KEY `id` (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Tabela' ;

meu form:

CODE
<form name="upload" id="upload" action="manda.php" method="post" enctype="multipart/form-data">

<ul>

<li>dir</li>

<li><input name="dir" type="text" id="dir" /></li>

 

<li><input name="form_imagem[]" type="file" id="form_imagem[]" /></li>

<li>legenda<input name="legenda" type="text" id="legenda" /></li>

 

<li><input name="form_imagem[]" type="file" id="form_imagem[]" /></li>

<li>legenda<input name="legenda" type="text" id="legenda" /></li>

 

<li><input type="submit" value="Enviar" /></li>

</ul>

</form>

Coloquei só dois campos p envio p encurtar o code, vou usar 10 campos.

 

Ai a parte q uso do code q você mandou é essa:

 

CODE
<?

set_time_limit(0);

 

// tamanho das imagens

$x_g = 550;

$y_g = 412;

$x_p = 200; // 120

$y_p = 150; // 90

 

// criando identificadores

$pqn = 0;

$nomeia_imagens = "_g";

 

// gerando um novo nome para o arquivo para nao haver conflito

$imagePath = foto;

 

// iniciando loops

for($j=0; $j<2; $j++) {

if($pqn == 1) {

$x_g = $x_p;

$y_g = $y_p;

$nomeia_imagens = "_p";

}

for($i=0; $i<3; $i++) {

$imagem = $_FILES['form_imagem']['name'][$i];

$imagem_temporaria = $_FILES['form_imagem']['tmp_name'][$i];

### MONTANDO IMAGEM GRANDE

### MONTANDO O NOME DO ARQUIVO RESULTANTE GRANDE

 

//$arquivo_grande = explode(".", $imagem);

$arquivo_grande = "img/".$imagePath . $nomeia_imagens . $i . ".jpg";

 

### LENDO A IMAGEM ORIGINAL E OBTENDO AS SUAS DIMENSOES

$foto_original = imagecreatefromjpeg($imagem_temporaria);

$foto_originalx_g = imagesx($foto_original);

$foto_originaly_g = imagesy($foto_original);

 

### CRIANDO A IMAGEM QUE IRA CONTER A MINIATURA

$foto_final_g = imagecreatetruecolor($x_g, $y_g);

 

### REDIMENSIONANDO PARA DENTRO DA IMAGEM FINAL

$img_upload_g = imagecopyresampled($foto_final_g, $foto_original, 0, 0, 0, 0, $x_g+1, $y_g+1, $foto_originalx_g, $foto_originaly_g);

imagejpeg($foto_final_g, $arquivo_grande);

}

// fim do loop das pequenas

$pqn = 1;

}

$imagem0 = "img/".$imagePath . "_p0.jpg";

$imagem1 = "img/".$imagePath . "_p1.jpg";

$imagem2 = "img/".$imagePath . "_p2.jpg";

$imagem3 = "img/".$imagePath . "_g0.jpg";

$imagem4 = "img/".$imagePath . "_g1.jpg";

$imagem5 = "img/".$imagePath . "_g2.jpg";

 

$imgpequenas = $imagem0 . "|" .$imagem1 . "|" .$imagem2;

$imggrandes = $imagem3 . "|" .$imagem4 . "|" .$imagem5;

 

$dir = $_POST['dir'];

$legenda = $_POST['legenda'];

 

// -Banco de Dados - //

include "conexao_MYSQL.php";

//consulta sql inserindo os dados

$sql = "INSERT into galeria

(id, dir, mini, foto, legenda)

VALUES

(NULL , '$dir', '$imgpequenas', '$imggrandes', '$legenda')";

$resultado=mysql_query($sql)

or die("Erro na query , ".mysql_error());

 

$pqn = 0;

?>

Aqui q o bixo da nó na minha cabeça, eu queria que cada foto fosse gravada em um id diferente, junto com a sua respectiva legenda, a $dir vou usar p identificar a pasta onde guardarei as fotos, entao td bem de repetir ela p tds os registros.

 

Do jeito que esta, ele grava assim:

VALUES (39, 'renato', 'img/foto_p0.jpg|img/foto_p1.jpg|img/foto_p2.jpg', 'img/foto_g0.jpg|img/foto_g1.jpg|img/foto_g2.jpg', 'foto3');

 

O que busco é fazer o registro dessa forma:

VALUES (1, 'renato', 'foto01.jpg', 'foto01.jpg', 'Café da manhã variado');

VALUES (2, 'renato', 'foto02.jpg', 'foto02.jpg', 'Café da tarde');

VALUES (3, 'renato', 'foto03.jpg', 'foto03.jpg', 'Cafezinho');

 

Galera que devo fazer para conseguir isso da forma correta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procurei algo parecido, mas não estou encontrando, ou fazendo a busca errada, não sei como devo chamar esse problema.

 

Qualquer ajuda será bem vinda.

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.