In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Imagem no MySQL (blob)

Foro público de Xailer en español
Responder
Sommus
Mensajes: 310
Registrado: Vie Jul 24, 2009 9:39 pm

Imagem no MySQL (blob)

Mensaje por Sommus »

Pessoal,
Tenho um campo de imagem (tipo "blob") numa tabela do banco MySQL... e estou
fazendo o seguinte para obter, gravar, e ler essa imagem do banco:
Objetos instanciados:
oBrowseFile (TFileOpenDlg)
oLogo (TImage)
oSRV_config_empresa (TSQLQuery)
Para Obter o arquivo de uma pasta qualquer e gravar no banco de dados:
::oBrowseFile:Execute()
::oLogo:oPicture:=IIF(Empty(::oBrowseFile:cFullFileName),NIL ,TPicture():LoadFromFile(::oBrowseFile:cFullFileName))
::oSRV_config_empresa:cfe_logo:=IIF(::oLogo:oPicture==NIL,NI L,::oLogo:oPicture:SaveToStream())
Para ler do banco de dados:
::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
Está funcionando corretamente, exceto por um pequeno problema:
Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
imagem, mostra no componente "::oLogo", mas, não persiste no banco de
dados...
Sabe me dizer qual o problema?
Obrigado pela atenção,
Reginaldo
jrcpoli-quitar
Mensajes: 558
Registrado: Mar Feb 09, 2010 2:26 pm

Imagem no MySQL (blob)

Mensaje por jrcpoli-quitar »

Saludos:
En correos anteriores José Giménez decí­a:
- Para guardar la imagen:
::oDataset1:foto := ::oImage1:oPicture:SaveToStream()
- Para cargar la imagen:
::oImage1:oPicture := TPicture():LoadFromStream( ::oDataset1:foto )
Otras observaciones:
En el caso de que las imágenes fueran muy grandes, te aconsejo cargar
directamente la imagen en memoria (p.ej. con FOpen() / FRead() ) y
guardarla
directamente con:
::oTable:imagen := cBuffer
José R.Castro.
El 04/02/2013 13:48, Sommus - Reginaldo escribió:
> Pessoal,
>
> Tenho um campo de imagem (tipo "blob") numa tabela do banco MySQL... e
> estou fazendo o seguinte para obter, gravar, e ler essa imagem do banco:
>
> Objetos instanciados:
> oBrowseFile (TFileOpenDlg)
> oLogo (TImage)
> oSRV_config_empresa (TSQLQuery)
>
>
> Para Obter o arquivo de uma pasta qualquer e gravar no banco de dados:
> ::oBrowseFile:Execute()
> ::oLogo:oPicture:=IIF(Empty(::oBrowseFile:cFullFileName),NIL ,TPicture():LoadFromFile(::oBrowseFile:cFullFileName))
>
> ::oSRV_config_empresa:cfe_logo:=IIF(::oLogo:oPicture==NIL,NI L,::oLogo:oPicture:SaveToStream())
>
>
>
> Para ler do banco de dados:
> ::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
>
>
>
> Está funcionando corretamente, exceto por um pequeno problema:
> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
> dados...
>
> Sabe me dizer qual o problema?
>
> Obrigado pela atenção,
>
> Reginaldo
>
>
>
Sommus
Mensajes: 310
Registrado: Vie Jul 24, 2009 9:39 pm

Imagem no MySQL (blob)

Mensaje por Sommus »

Caro José Ramón,
Não sei se a imagem é muito grande (jpg de 386kb)... Porém, tentei usando:
::oSRV_config_empresa:cfe_logo:=memoread(::oBrowseFile:cFull FileName)
e também tentei:
cBuffer:=1000000
nArquivo:=FOPEN(::oBrowseFile:cFullFileName)
FREAD(nArquivo,@cBuffer,1000000)
FCLOSE(nArquivo)
::oSRV_config_empresa:cfe_logo:=cBuffer
Porém tenho o mesmo problema... a imagem não persiste no banco de dados...
Obrigado pela atenção,
Reginaldo
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escreveu
na notí­cia da mensagem:510fbde1$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Saludos:
>
> En correos anteriores José Giménez decí­a:
>
> - Para guardar la imagen:
>
> ::oDataset1:foto := ::oImage1:oPicture:SaveToStream()
>
> - Para cargar la imagen:
>
> ::oImage1:oPicture := TPicture():LoadFromStream( ::oDataset1:foto )
>
> Otras observaciones:
>
> En el caso de que las imágenes fueran muy grandes, te aconsejo cargar
> directamente la imagen en memoria (p.ej. con FOpen() / FRead() ) y
> guardarla
> directamente con:
>
> ::oTable:imagen := cBuffer
>
> José R.Castro.
>
> El 04/02/2013 13:48, Sommus - Reginaldo escribió:
>> Pessoal,
>>
>> Tenho um campo de imagem (tipo "blob") numa tabela do banco MySQL... e
>> estou fazendo o seguinte para obter, gravar, e ler essa imagem do banco:
>>
>> Objetos instanciados:
>> oBrowseFile (TFileOpenDlg)
>> oLogo (TImage)
>> oSRV_config_empresa (TSQLQuery)
>>
>>
>> Para Obter o arquivo de uma pasta qualquer e gravar no banco de dados:
>> ::oBrowseFile:Execute()
>> ::oLogo:oPicture:=IIF(Empty(::oBrowseFile:cFullFileName),NIL ,TPicture():LoadFromFile(::oBrowseFile:cFullFileName))
>>
>> ::oSRV_config_empresa:cfe_logo:=IIF(::oLogo:oPicture==NIL,NI L,::oLogo:oPicture:SaveToStream())
>>
>>
>>
>> Para ler do banco de dados:
>> ::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
>>
>>
>>
>> Está funcionando corretamente, exceto por um pequeno problema:
>> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
>> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
>> dados...
>>
>> Sabe me dizer qual o problema?
>>
>> Obrigado pela atenção,
>>
>> Reginaldo
>>
>>
>>
jrcpoli-quitar
Mensajes: 558
Registrado: Mar Feb 09, 2010 2:26 pm

Imagem no MySQL (blob)

Mensaje por jrcpoli-quitar »

Saludos:
Datasource de MySQL(TMySQLDataSource) y Datasets(TSqlTable)
::oSQLTable1:Open()
// Según necesites añadir o editar
::oSQLTable1:edit()
::oSQLTable1:addnew()
::oSQLTable1:imagen :=MEMOREAD(cruta)
::oSQLTable1:update()
::oSQLTable1:end()
Prueba esto
El 04/02/2013 16:29, Sommus - Reginaldo escribió:
> Caro José Ramón,
>
> Não sei se a imagem é muito grande (jpg de 386kb)... Porém, tentei usando:
>
> ::oSRV_config_empresa:cfe_logo:=memoread(::oBrowseFile:cFull FileName)
>
> e também tentei:
>
> cBuffer:=1000000
> nArquivo:=FOPEN(::oBrowseFile:cFullFileName)
> FREAD(nArquivo,@cBuffer,1000000)
> FCLOSE(nArquivo)
> ::oSRV_config_empresa:cfe_logo:=cBuffer
>
>
> Porém tenho o mesmo problema... a imagem não persiste no banco de dados...
>
>
> Obrigado pela atenção,
>
> Reginaldo
>
>
> "José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es>
> escreveu na notí­cia da mensagem:510fbde1$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Saludos:
>>
>> En correos anteriores José Giménez decí­a:
>>
>> - Para guardar la imagen:
>>
>> ::oDataset1:foto := ::oImage1:oPicture:SaveToStream()
>>
>> - Para cargar la imagen:
>>
>> ::oImage1:oPicture := TPicture():LoadFromStream( ::oDataset1:foto )
>>
>> Otras observaciones:
>>
>> En el caso de que las imágenes fueran muy grandes, te aconsejo cargar
>> directamente la imagen en memoria (p.ej. con FOpen() / FRead() ) y
>> guardarla
>> directamente con:
>>
>> ::oTable:imagen := cBuffer
>>
>> José R.Castro.
>>
>> El 04/02/2013 13:48, Sommus - Reginaldo escribió:
>>> Pessoal,
>>>
>>> Tenho um campo de imagem (tipo "blob") numa tabela do banco MySQL... e
>>> estou fazendo o seguinte para obter, gravar, e ler essa imagem do banco:
>>>
>>> Objetos instanciados:
>>> oBrowseFile (TFileOpenDlg)
>>> oLogo (TImage)
>>> oSRV_config_empresa (TSQLQuery)
>>>
>>>
>>> Para Obter o arquivo de uma pasta qualquer e gravar no banco de dados:
>>> ::oBrowseFile:Execute()
>>> ::oLogo:oPicture:=IIF(Empty(::oBrowseFile:cFullFileName),NIL ,TPicture():LoadFromFile(::oBrowseFile:cFullFileName))
>>>
>>>
>>> ::oSRV_config_empresa:cfe_logo:=IIF(::oLogo:oPicture==NIL,NI L,::oLogo:oPicture:SaveToStream())
>>>
>>>
>>>
>>>
>>> Para ler do banco de dados:
>>> ::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
>>>
>>>
>>>
>>>
>>> Está funcionando corretamente, exceto por um pequeno problema:
>>> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
>>> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
>>> dados...
>>>
>>> Sabe me dizer qual o problema?
>>>
>>> Obrigado pela atenção,
>>>
>>> Reginaldo
>>>
>>>
>>>
Sommus
Mensajes: 310
Registrado: Vie Jul 24, 2009 9:39 pm

Imagem no MySQL (blob)

Mensaje por Sommus »

Caro José Ramón,
Isso não resolveu o problema...
Reginaldo
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escreveu
na notí­cia da mensagem:510fffd9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Saludos:
>
> Datasource de MySQL(TMySQLDataSource) y Datasets(TSqlTable)
>
> ::oSQLTable1:Open()
> // Según necesites añadir o editar ::oSQLTable1:edit()
> ::oSQLTable1:addnew()
>
> ::oSQLTable1:imagen :=MEMOREAD(cruta)
>
> ::oSQLTable1:update()
>
> ::oSQLTable1:end()
>
> Prueba esto
>
> El 04/02/2013 16:29, Sommus - Reginaldo escribió:
>> Caro José Ramón,
>>
>> Não sei se a imagem é muito grande (jpg de 386kb)... Porém, tentei
>> usando:
>>
>> ::oSRV_config_empresa:cfe_logo:=memoread(::oBrowseFile:cFull FileName)
>>
>> e também tentei:
>>
>> cBuffer:=1000000
>> nArquivo:=FOPEN(::oBrowseFile:cFullFileName)
>> FREAD(nArquivo,@cBuffer,1000000)
>> FCLOSE(nArquivo)
>> ::oSRV_config_empresa:cfe_logo:=cBuffer
>>
>>
>> Porém tenho o mesmo problema... a imagem não persiste no banco de
>> dados...
>>
>>
>> Obrigado pela atenção,
>>
>> Reginaldo
>>
>>
>> "José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es>
>> escreveu na notí­cia da mensagem:510fbde1$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Saludos:
>>>
>>> En correos anteriores José Giménez decí­a:
>>>
>>> - Para guardar la imagen:
>>>
>>> ::oDataset1:foto := ::oImage1:oPicture:SaveToStream()
>>>
>>> - Para cargar la imagen:
>>>
>>> ::oImage1:oPicture := TPicture():LoadFromStream( ::oDataset1:foto )
>>>
>>> Otras observaciones:
>>>
>>> En el caso de que las imágenes fueran muy grandes, te aconsejo cargar
>>> directamente la imagen en memoria (p.ej. con FOpen() / FRead() ) y
>>> guardarla
>>> directamente con:
>>>
>>> ::oTable:imagen := cBuffer
>>>
>>> José R.Castro.
>>>
>>> El 04/02/2013 13:48, Sommus - Reginaldo escribió:
>>>> Pessoal,
>>>>
>>>> Tenho um campo de imagem (tipo "blob") numa tabela do banco MySQL... e
>>>> estou fazendo o seguinte para obter, gravar, e ler essa imagem do
>>>> banco:
>>>>
>>>> Objetos instanciados:
>>>> oBrowseFile (TFileOpenDlg)
>>>> oLogo (TImage)
>>>> oSRV_config_empresa (TSQLQuery)
>>>>
>>>>
>>>> Para Obter o arquivo de uma pasta qualquer e gravar no banco de dados:
>>>> ::oBrowseFile:Execute()
>>>> ::oLogo:oPicture:=IIF(Empty(::oBrowseFile:cFullFileName),NIL ,TPicture():LoadFromFile(::oBrowseFile:cFullFileName))
>>>>
>>>>
>>>> ::oSRV_config_empresa:cfe_logo:=IIF(::oLogo:oPicture==NIL,NI L,::oLogo:oPicture:SaveToStream())
>>>>
>>>>
>>>>
>>>>
>>>> Para ler do banco de dados:
>>>> ::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
>>>>
>>>>
>>>>
>>>>
>>>> Está funcionando corretamente, exceto por um pequeno problema:
>>>> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
>>>> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
>>>> dados...
>>>>
>>>> Sabe me dizer qual o problema?
>>>>
>>>> Obrigado pela atenção,
>>>>
>>>> Reginaldo
>>>>
>>>>
>>>>
Sommus
Mensajes: 310
Registrado: Vie Jul 24, 2009 9:39 pm

Imagem no MySQL (blob)

Mensaje por Sommus »

Caro José F. Giménez,
Alguma sugestão?
Obrigado pela atenção,
Reginaldo
"Sommus - Reginaldo" <reginaldo@sommus.com> escreveu na notí­cia da
mensagem:510fad3d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Pessoal,
>
> Tenho um campo de imagem (tipo "blob") numa tabela do banco MySQL... e
> estou fazendo o seguinte para obter, gravar, e ler essa imagem do banco:
>
> Objetos instanciados:
> oBrowseFile (TFileOpenDlg)
> oLogo (TImage)
> oSRV_config_empresa (TSQLQuery)
>
>
> Para Obter o arquivo de uma pasta qualquer e gravar no banco de dados:
> ::oBrowseFile:Execute()
> ::oLogo:oPicture:=IIF(Empty(::oBrowseFile:cFullFileName),NIL ,TPicture():LoadFromFile(::oBrowseFile:cFullFileName))
> ::oSRV_config_empresa:cfe_logo:=IIF(::oLogo:oPicture==NIL,NI L,::oLogo:oPicture:SaveToStream())
>
>
> Para ler do banco de dados:
> ::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
>
>
> Está funcionando corretamente, exceto por um pequeno problema:
> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
> dados...
>
> Sabe me dizer qual o problema?
>
> Obrigado pela atenção,
>
> Reginaldo
>
>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5714
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Imagem no MySQL (blob)

Mensaje por jfgimenez »

Reginaldo,
> Está funcionando corretamente, exceto por um pequeno problema:
> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
> dados...
Quizás te esté fallando con imágenes BMP. En ese caso, :SaveToStream()
falla algunas veces, debido a un problema de GDI+. No es un problema
intrí­nseco de Xailer, en los foros de MS hay muchas referencias al mismo
problema.
Lo mejor para guardar una imagen en la BD, es leer el archivo
directamente de disco. No es necesario hacerlo pasar por un TPicture. P.ej.:
::oSRV_config_empresa:cfe_logo := hb_MemoRead(
::oBrowseFile:cFullFileName )
y después puedes mostrarlo como lo tení­as:
::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Sommus
Mensajes: 310
Registrado: Vie Jul 24, 2009 9:39 pm

Imagem no MySQL (blob)

Mensaje por Sommus »

Caro José,
Hb_memoread() é diferente de memoread(), pois, o memoread() já testei e
tenho o mesmo problema...
Obrigado pela atenção,
Reginaldo
"Jose F. Gimenez" <jfgimenezAM]"@wanadoo.es> escreveu na notí­cia da
mensagem:51137444$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Reginaldo,
>
>> Está funcionando corretamente, exceto por um pequeno problema:
>> Algumas imagens simplesmente não gravam... Não dá erro algum. Obtém a
>> imagem, mostra no componente "::oLogo", mas, não persiste no banco de
>> dados...
>
> Quizás te esté fallando con imágenes BMP. En ese caso, :SaveToStream()
> falla algunas veces, debido a un problema de GDI+. No es un problema
> intrí­nseco de Xailer, en los foros de MS hay muchas referencias al mismo
> problema.
>
> Lo mejor para guardar una imagen en la BD, es leer el archivo directamente
> de disco. No es necesario hacerlo pasar por un TPicture. P.ej.:
>
> ::oSRV_config_empresa:cfe_logo := hb_MemoRead(
> ::oBrowseFile:cFullFileName )
>
> y después puedes mostrarlo como lo tení­as:
>
> ::oLogo:oPicture:=IIF(::oSRV_config_empresa:cfe_logo==NIL,NI L,TPicture():LoadFromStream(::oSRV_config_empresa:cfe_logo))
>
>
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
Responder