DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Introdução ao uso de imagens no MySQL

Em muitas aplicações comerciais ou científicas é necessário que se armazenem imagens na base de dados. Apesar de muitos especialistas garantirem que é mais eficiente armazenar imagens em arquivos ao invés de tabelas, não são raros aqueles que sentem dificuldade em gerenciar arquivos fora do banco de dados. Por esta razão este artigo foi desenvolvido. Nele apresentamos uma introdução (simples) sobre o armazenamento de imagens em tabelas MySQL utilizando a linguagem PHP.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

1. Introdução

Em muitas aplicações comerciais ou científicas é necessário que se armazenem imagens na base de dados. Apesar de muitos especialistas garantirem que é mais eficiente armazenar imagens em arquivos ao invés de tabelas, não são raros aqueles que sentem dificuldade em gerenciar arquivos fora do banco de dados. Por esta razão este artigo foi desenvolvido. Nele apresentamos uma introdução sobre o armazenamento de imagens em tabelas MySQL utilizando a linguagem PHP.

2. Tipos blob

Como você deve saber existe uma série de tipos de campos definidos no MySQL: inteiros, texto regular, números reais, etc. A diferença principal entre estes campos (tipos primários) e o blob é principalmente a quantidade de informação que se consegue armazenar.

Um blob é um campo binário grande que pode uma gama variada de dados. Os quatro tipos blob existentes no MySQL são: TINYBLOB, BLOB, MEDIUMBLOB, e LONGBLOB. Estes tipos diferem apenas no tamanho máximo de bytes que podem armazenar. É neste tipo de campo que armazenamos imagens no MySQL.

3. Criando a tabela no banco

O script abaixo nos mostra como criar uma tabela no MySQL que contenha um campo blob. A tabela que iremos criar se chama PESSOA e contém um ID (Chave primária) e a imagem da pessoa.

CREATE TABLE PESSOA (
PES_ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PES_IMG BLOB
);

 
4. Inserindo a imagem na tabela criada

Um exemplo de um script PHP que carrega uma imagem em memória e a armazena na tabela MySQL é exibido a seguir. No script, assume-se que o nome do file field é “Imagem”
 


If($Imagem != "none") {
$TamanhoImg = filesize($Imagem);
$mysqlImg = addslashes(fread(fopen($Imagem, "r"), $ TamanhoImg));
mysql_connect($host,$username,$password) or die("Impossível Conectar");
@
mysql_select_db($db) or die("Impossível Conectar");
mysql_query("INSERT INTO PESSOA (PES_IMG) VALUES ('$mysqlImg')") or die("O sistema não foi capaz de executar a query");
}
else {
echo
"Você não realizou o upload de forma satisfatória.";
}
?>

 
Este trecho é simplesmente o necessário para se inserir uma imagem em um banco de dados MySQL. É importante que se cheque o packet size máximo configurado no servidor MySQL. Caso este valor esteja muito pequeno podem ocorrer erros de gravação do arquivo na tabela.


5. Exibindo as imagens gravadas anteriormente


Neste ponto já sabemos como gravar as imagens na tabela. Mas de que adianta gravarmos se não conseguirmos recuperá-las? O trecho de código para recuperação das figuras é um pouco mais complicado do que o código de armazenamento. Entretanto, não podemos considerá-lo um código extremamente complicado. A seguir segue o código de recuperação de imagens:

 




mysql_connect
($host,$username,$password) or die("Impossível conectar ao banco.");
@
mysql_select_db($db) or die("Impossível conectar ao banco");
$result=mysql_query("SELECT * FROM PESSOA") or die("Impossível executar a query");
While(
$row=mysql_fetch_object($result)) {
echo
"PicNum \">";
}
?>

 


mysql_connect
($host,$username,$password) or die("Impossível conectar ao banco.");
@
mysql_select_db($db) or die("Impossível conectar ao banco.");
$result=mysql_query("SELECT * FROM PESSOA WHERE PES_ID=$PicNum") or die("Impossível executar a query ");
$row=mysql_fetch_object($result);
Header( "Content-type: image/gif");
echo
$row->Image;
?>

 
Bem, apesar do exemplo ser simples, espero ter ajudado aos iniciantes no armazenamento de imagens em bancos de dado MySQL.



Obteve o título de Bacharel em Ciência da Computação em 2004 pela Universidade Federal do Rio de Janeiro (IM/DCC) e o de Mestrado em 2008, pela COPPE/UFRJ. Atualmente realiza o seu Doutorado na Linha de Banco de Dados, no PESC - C [...]

O que você achou deste post?
Conhece a assinatura MVP?
Publicidade
Serviços

Mais posts