Página 1 de 1
Imagem no MySQL (blob)
Publicado: Lun Feb 04, 2013 1:45 pm
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
Imagem no MySQL (blob)
Publicado: Lun Feb 04, 2013 2:55 pm
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
>
>
>
Imagem no MySQL (blob)
Publicado: Lun Feb 04, 2013 4:29 pm
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
>>
>>
>>
Imagem no MySQL (blob)
Publicado: Lun Feb 04, 2013 7:37 pm
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
>>>
>>>
>>>
Imagem no MySQL (blob)
Publicado: Lun Feb 04, 2013 8:33 pm
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
>>>>
>>>>
>>>>
Imagem no MySQL (blob)
Publicado: Mar Feb 05, 2013 3:58 pm
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
>
>
>
Imagem no MySQL (blob)
Publicado: Jue Feb 07, 2013 10:30 am
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
Imagem no MySQL (blob)
Publicado: Jue Feb 07, 2013 1:20 pm
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