Jump to content


WellingtonSousa

Member Since 27/08/2008
Offline Last Active 09/09/2008, 18:11
-----

Topics I've Started

Mostrar Thumbnail De Imagem Salva No Banco De Dados

27/08/2008, 15:17

Olá pessoal!!

Estou com um grande problema. Preciso fazer o upload de uma imagem, salvá-la no banco Mysql e depois apresentá-la, más em thumbnail.

Toda a parte de upload, salvar no banco e mostrar a imagem real já consegui fazer, o difícil está a apresentação como Thumbnail. Já pesquisei na internet, onde encontrei vários exemplos, más todos de imagens salva num diretório e não no banco.

Me ajudem ai pessoal!!!!!

Olá pessoal, depois de muita procura e pesquisas e mais pesquisas, consegui fazer o que queria. É muito difícil encontrar um exemplo que gere um thumbnail do banco de dados. Sendo assim quero compartilhar isso com vocês postando o exemplo:

1 – Segue o arquivo upload.php onde será mostrada as imagens e também é feito o upload da imagem:
[codebox]
<!-- **** 1-Essa parte faz o upload das imagens para Salvar no Banco **** -->
<html>
<head>
<title>Entrada de Imagens</title>
</head>
<body>
<form enctype='multipart/form-data' action='salvar_imagen.php' method="post">
Descrição:<input type='text' name='descricao' size='45'>
Imagem:<input type='file' name='f_foto_usuarios' size='50'>
<input type='submit' value='Gravar'>
</form>
</body>
</html>

<!-- **** 4-Essa parte Apresenta as imagens Salvas no Banco **** -->
<?php
include("Constantes/conecta_MySql.php");
$sql="select id, descricao from teste";
$res=mysql_query($sql);
while($pegar=mysql_fetch_array($res)){
$id=$pegar['id'];
echo "<img width=50 height=60 src='ver_imagen.php?id=$id'>";
echo $pegar['descricao']."<br>";
}
?>
[/codebox]

2- Segue abaixo o arquivo Salvar_imagem.php que salvará a imagem no banco de dados:
2.1 - Segue o codigo do arquivo de conexão com o banco de dados "conecta_MySql.php"
[codebox]
<?php
//Variaveis de conexão
$host = 'localhost';
$user = 'teste';
$pwd = '';
$db = 'sportaria';
//Conecta MySQL direto
$con = @mysql_connect($host,$user,$pwd) or die('Falha na conexão com o servidor['. $host .'] \n erro :\n\t' .mysql_error);
$conecta=@mysql_select_db($db,$con) or die ('Falha ao conectar ao banco ['.$db.']');
?>

[/codebox]

[codebox]
<!-- **** 2-Essa parte Salva as imagens no banco **** -->
<?php
include("Constantes/conecta_MySql.php");
$desc=$_POST['descricao'];
/*
**** Nome do arquivo: usuarios_salvar.php ****
*/
// VERIFICA TAMANHO DA IMAGEM (Este teste não é obrigatório)
if(is_uploaded_file($_FILES['f_foto_usuarios']['tmp_name'])) {
if($_FILES['f_foto_usuarios']['size']>(130*1024)) { // se for maior de 130k
echo 'Arquivo de imagem deve ser menor que 130Kb!';
}
}

// INÍCIO: UPLOAD IMAGEM
if(is_uploaded_file($_FILES['f_foto_usuarios']['tmp_name'])) {
$imgData = file_get_contents($_FILES['f_foto_usuarios']['tmp_name']);
$sizeData = getimagesize($_FILES['f_foto_usuarios']['tmp_name']);
$foto_usuarios = $imgData;
$tipo_foto_usuarios = $sizeData['mime'];
//SALVAR A IMAGEM E SUA DESCRIÇÃO NO BANCO DE DADOS
$qr = "INSERT INTO teste (tipo_foto_usuarios,foto_usuarios,descricao) VALUES('".$tipo_foto_usuarios."','".addslashes($foto_usuarios)."','$desc')";
mysql_query($qr) or die(mysql_error());
}
// FIM: UPLOAD IMAGEM
[/codebox]


3 –Segue abaixo o arquivo que busca a imagem do banco, gera o thumbnail e apresenta:
[codebox]
<?php
//<!-- 3-Essa parte pega a imagem do banco de dados, torna ela um Thumbnail e apresenta -->
$id=$_GET['id'];
include("Constantes/conecta_MySql.php");
$sql = "SELECT *FROM teste where id=$id";
$res = mysql_query($sql);
$l = mysql_fetch_array($res);

header("Content-type: image/jpg");

//pegar o valor da imagem original
$im = imagecreatefromstring($l['foto_usuarios']);
$width = imagesx($im);
$height = imagesy($im);
// Set thumbnail-width to 50 pixel
$imgw = 50;
// calculate thumbnail-height from given width to maintain aspect ratio
$imgh = $height / $width * $imgw;
// create new image truecolor using thumbnail-size
$thumb=imagecreatetruecolor($imgw,$imgh);

// copy original image to thumbnail
ImageCopyResized($thumb,$im,0,0,0,0,$imgw,$imgh,ImageSX($im),ImageSY($im));

// show thumbnail on screen
$out = ImagejpeG($thumb);
print($out);

// clean memory
imagedestroy ($im);
imagedestroy ($thumb);
?>

[/codebox]

4- Para poder apresentar todas as imagens do banco na mesma tela de upload o código abaixo, fará isso(lembrando que esta parte já está contida no item 1:
[codebox]
<!-- **** 4-Essa parte Apresenta as imagens Salvas no Banco **** -->
<?php
include("Constantes/conecta_MySql.php");//conexão ao banco
$sql="select id, descricao from teste";
$res=mysql_query($sql);
while($pegar=mysql_fetch_array($res)){
$id=$pegar['id'];
echo "<img width=50 height=60 src='ver_imagen.php?id=$id'>";
echo $pegar['descricao']."<br>";
}
?>

[/codebox]

5- Abaixo segue a estrutura do banco de dados utilizado nos teste

DROP TABLE IF EXISTS `sportaria`.`teste`;
CREATE TABLE `sportaria`.`teste` (
`foto_usuarios` longblob NOT NULL,
`tipo_foto_usuarios` varchar(50) NOT NULL,
`id` int(10) unsigned NOT NULL auto_increment,
`descricao` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1;

IPB Skin By Virteq