Converter Imagem em binário

4,095 views
Skip to first unread message

Carine Monteiro

unread,
Apr 11, 2012, 3:45:06 PM4/11/12
to php-b...@googlegroups.com
Boa tarde pessoal,

Tenho uma aplicação que guarda todo o conteúdo no banco de dados em binário, mas em algumas funções o que acontece é que a imagem não é carregada por completo, como se o binário convertido não representasse a imagem por inteiro, por isso algumas imagens não carregam ou só pela metade na exibição. 

 // Dados gerais da imagem
$img_temp_nome  = $_FILES['arquivo']['tmp_name'];
$img_size = $_FILES['arquivo']['size'];
$img_type = $_FILES['arquivo']['type'];
$fp = fopen($img_temp_nome, 'r');
$content = fread($fp, filesize($img_temp_nome));
$content = addslashes($content);
fclose($fp);

Dicas? 

Carine Monteiro

Eduardo Kraus

unread,
Apr 11, 2012, 4:13:36 PM4/11/12
to php-b...@googlegroups.com

Porque não salva isso em pastas???

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/php-brasil/-/TOlSXddmI0sJ.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.

Luiz Nogueira

unread,
Apr 11, 2012, 4:28:25 PM4/11/12
to php-b...@googlegroups.com
Tenta fazer desta forma:

Eu uso e nunca tive problema.
$imagemFile = $_FILES["imagem"]["tmp_name"];
$imagemSize = $_FILES["imagem"]["size"];
$size = $imagemSize / 1000;
$size = $size." kb";
$imagemName = $_FILES["imagem"]["name"];
$imagemType = $_FILES["imagem"]["type"];

$imagem = fopen($imagemFile, "rb");
$imagemData = base64_encode(fread($imagem, $iimagemSize));

//Inserção na base de dados
DATABASE_query("INSERT INTO ".$DB_prefix."imagem (name,image,size,type) VALUES ('$imagemName','$imagemData','$size','$imagemType')");
fclose($imagem);

Espero que ajude....

Fabio Branco da Silva

unread,
Apr 12, 2012, 7:21:06 AM4/12/12
to php-b...@googlegroups.com
Bom dia Carine,

Pode ser que o usuario esteja enviando imagens maiores que o permitido no
campo como foi especificado em banco de dados, verifica se o campo �
medium_blob, o medium blob armazena ate 4Gb, o tiny blob apenas 64k e o outro
blob type nao lembro quanto pode armazenar.
Tive problema parecido com o seu quando fui gravar arquivos PDF no banco de
dados, atraves do type identifique o tipo de arquivo que esta vindo e negue
caso nao seja imagem(xjpeg, jpeg, gif, png, bmp, jpg), para salvar os PDFs
resolvi salva-los em disco, pois nao encontrei solucao li outros foruns do
exterior em ingles e espanhol mas nao encontrei forma de salvar os PDFs sempre
dava erro de arquivo corrompido, li inclusive uma cita�ao de um desenvolvedor
americano que quando se trata de PDF nao se pode usar o addslashes, tem que se
salvar usando a rotina mysql_real_escape, bom fica ai o que descobri ate o
momento, espero que ajude, qualquer coisa podemos trocar ideia sobre o
assunto.

On Wed, 11 Apr 2012 12:45:06 -0700 (PDT), Carine Monteiro wrote
> Boa tarde pessoal,
>
> Tenho uma aplica��o que guarda todo o conte�do no banco de dados em
> bin�rio, mas em algumas fun��es o que acontece � que a imagem n�o �
> carregada por completo, como se o bin�rio convertido n�o
> representasse a imagem por inteiro, por isso algumas imagens n�o
> carregam ou s� pela metade na exibi��o.


>
> // Dados gerais da imagem
> $img_temp_nome = $_FILES['arquivo']['tmp_name'];
> $img_size = $_FILES['arquivo']['size'];
> $img_type = $_FILES['arquivo']['type'];
> $fp = fopen($img_temp_nome, 'r');
> $content = fread($fp, filesize($img_temp_nome));
> $content = addslashes($content);
> fclose($fp);
>
> Dicas?
>
> Carine Monteiro
>

> --
> Voc� est� recebendo esta mensagem porque se inscreveu no grupo "php-
> brasil" dos Grupos do Google. Para ver esta discuss�o na web, acesse

> https://groups.google.com/d/msg/php-brasil/-/TOlSXddmI0sJ. Para
> postar neste grupo, envie um e-mail para php-

> bra...@googlegroups.com. Para cancelar a inscri��o nesse grupo,


> envie um e-mail para php-brasil+...@googlegroups.com. Para

> obter mais op��es, visite esse grupo em
> http://groups.google.com/group/php-brasil?hl=pt-BR.


--
www.fdnet.com.br

Carine Monteiro

unread,
Apr 12, 2012, 7:51:55 AM4/12/12
to php-b...@googlegroups.com
Oi Fábio,

Vou trocar o tipo de blob no banco de dados e observar o comportamento da aplicação. É uma exigência do projeto que as imagens sejam salvas no BD, então tenho resolver ou convence-los do contrário.

Abs,
Carine


Em quinta-feira, 12 de abril de 2012 08h21min06s UTC-3, Fabio Branco da Silva escreveu:
Bom dia Carine,

Pode ser que o usuario esteja enviando imagens maiores que o permitido no

campo como foi especificado em banco de dados, verifica se o campo �

medium_blob, o medium blob armazena ate 4Gb, o tiny blob apenas 64k e o outro
blob type nao lembro quanto pode armazenar.
 Tive problema parecido com o seu quando fui gravar arquivos PDF no banco de
dados, atraves do type identifique o tipo de arquivo que esta vindo e negue
caso nao seja imagem(xjpeg, jpeg, gif, png, bmp, jpg), para salvar os PDFs
resolvi salva-los em disco, pois nao encontrei solucao li outros foruns do
exterior em ingles e espanhol mas nao encontrei forma de salvar os PDFs sempre

dava erro de arquivo corrompido, li inclusive uma cita�ao de um desenvolvedor

americano que quando se trata de PDF nao se pode usar o addslashes, tem que se
salvar usando a rotina mysql_real_escape, bom fica ai o que descobri ate o
momento, espero que ajude, qualquer coisa podemos trocar ideia sobre o
assunto.

On Wed, 11 Apr 2012 12:45:06 -0700 (PDT), Carine Monteiro wrote
> Boa tarde pessoal,
>

> Tenho uma aplica��o que guarda todo o conte�do no banco de dados em
> bin�rio, mas em algumas fun��es o que acontece � que a imagem n�o �
> carregada por completo, como se o bin�rio convertido n�o
> representasse a imagem por inteiro, por isso algumas imagens n�o
> carregam ou s� pela metade na exibi��o.

Marcel Araujo

unread,
Apr 12, 2012, 7:23:55 PM4/12/12
to php-b...@googlegroups.com

Convenças com base em que o seu banco vai crescer exponencialmente de tamanho assim como sua lentidão. Isso é um assunto mais do que claro entre os desenvolvedores de que não devem ser salvos arquivos no banco mas em disco.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/php-brasil/-/8CPTWyX_u_sJ.

Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.

Suissa

unread,
Apr 12, 2012, 7:53:18 PM4/12/12
to php-b...@googlegroups.com
Se eu tiver que guardar arquivos no banco eu prefiro usar MongoDb com GridFS.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/php-brasil/-/8CPTWyX_u_sJ.

Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.



--
Jean C. Nascimento aka Suissa
WebDeveloper Sênior - SP



Reply all
Reply to author
Forward
0 new messages