Jump to content
Fivewin Brasil

Imagem no MySQL


oribeiro

Recommended Posts

Pessoal,

Eu passei a manhã toda estudando os tópicos do fórum relacionado a gravar imagem no MySql mas não consegui chegar num acordo.

Eu tenho as imagens dos produtos em arquivos no disco e quero gravá-las dentro de um campo no banco de dados e depois recuperá-las novamente mas não estou conseguindo.

1) Qual é o tipo de campo que eu crio? LONGBLOB?

2) Como gravar os arquivos das imagens para o campo do banco? MemoRead( cImagem )?

3) Como recuperar a imagem do campo e mostrar numa tela do Fivewin?

4) Como recuperar a imagem do banco dentro de uma página web (html ou php) ?

Está complicado! Risos

 

Link to comment
Share on other sites

Olá Oscar

Eu faço da seguinte maneira

No meu caso uso MedimBlob

Uma tabela somente para imagens

Exemplo no cliente

Quando entro pra editar busco a imagem do banco
IF !Empt(f_Foto) .OR. !Empt(f_Foto2)

   IF GeraQuery( "SELECT FOTO_CLI1,FOTO_CLI2 FROM imagens WHERE CD_CLIENTE = " + ANY2SQL(oCodClie)  ,_CodEmp,.F.,,,"tImagens",.T.)
      lTemFoto := .T.
      IF !File(f_Foto)
         MEMOWRIT(f_Foto,tImagens->Foto_Cli1)
      ENDIF
      IF !File(F_Foto2)
         MEMOWRIT(f_Foto2,tImagens->Foto_Cli2)
      ENDIF
      FechaSql ( "tImagens" )
   ENDIF

ENDIF

Qdo Saio da edição Caso altere algo

   IF lTemFoto
      GravaBase("DELETE FROM imagens WHERE cd_cliente = " + ANY2SQL( oCodClie ), "Imagens")

      SqlImg := "INSERT INTO imagens (cd_cliente,foto_cli1,foto_cli2) VALUES (" +;
                ANY2SQL( oCodClie )                                       + [,] +;
                ANY2SQL(MemoRead( f_Foto ))                               + [,] +;
                ANY2SQL(MemoRead( f_Foto2 )) + ")"
      GravaBase(SqlImg,"imagens")
    ELSE
       IF !Empt(f_Foto) .OR. !Empt(f_Foto2)
          SqlImg := "INSERT INTO imagens (cd_cliente,foto_cli1,foto_cli2) VALUES (" +;
                    ANY2SQL(oCodClie)            + [,] +;
                    ANY2SQL(MemoRead( f_Foto ))  + [,] +;
                    ANY2SQL(MemoRead( f_Foto2 )) + ")"
          GravaBase(SqlImg,"imagens")

       ENDIF

    ENDIF

Espero que ajude


 

Link to comment
Share on other sites

Ola, Bom dia

 

Eu tenho 2 funçoes para isso:

 

Function Image2SQL( cFile )
*********************************************************************************************************
**
** Prepara imagem para SQL
Return StrToHex(MemoRead(cFile))

Function SQL2Image( cSQL )
*********************************************************************************************************
**
** Prepara imagem do SQL para mostrar
Return HexToStr( cSQL )

Uso da seguinte forma para inserir

cLocal_Nova :=  CurDrive()+":\"+Curdir()+"\newfile.jpg"

"INSERT INTO estoque_imagem ( arimagem ) VALUES( "+SR_EscapeString( Image2SQL(cLocal_Nova), CONNECT_MYSQL )+ ")"

Para recuperar e motrar a imagem

oImagemOfFundo:LoadFromMemory( SQL2Image( campo_da_imagem ) )
oImagemOfFundo:Refresh()

 

Espero ter ajudado.

Link to comment
Share on other sites

 

Ola, Bom dia

 

Eu tenho 2 funçoes para isso:

 


Function Image2SQL( cFile )
*********************************************************************************************************
**
** Prepara imagem para SQL
Return StrToHex(MemoRead(cFile))

Function SQL2Image( cSQL )
*********************************************************************************************************
**
** Prepara imagem do SQL para mostrar
Return HexToStr( cSQL )

Uso da seguinte forma para inserir


cLocal_Nova :=  CurDrive()+":\"+Curdir()+"\newfile.jpg"

"INSERT INTO estoque_imagem ( arimagem ) VALUES( "+SR_EscapeString( Image2SQL(cLocal_Nova), CONNECT_MYSQL )+ ")"

Para recuperar e motrar a imagem


oImagemOfFundo:LoadFromMemory( SQL2Image( campo_da_imagem ) )
oImagemOfFundo:Refresh()

 

Espero ter ajudado.

Obrigado pelas orientações.

Pelo que entendi, usando StrToHex() / HexToStr() é possível ler o conteúdo do campo diretamente para a memória, sem a necessidade de recriar a imagem no disco. Parece perfeito! Vou utilizar aqui. A instrução FW_ValtoSQL() faz o mesmo que esses comandos?

Apenas uma dúvida, qual é o tipo do campo no banco que você criou? MediumBlob também ou é outro tipo?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...