Sacar imagen PNG de una tabla MySql (SOLUCIONADO)

Sacar imagen PNG de una tabla MySql (SOLUCIONADO)

Postby Armando » Mon Mar 13, 2017 3:31 am

Hola Foreros:

Llevo varios días sin lograr sacar con éxito una imagen PNG que esta
en un campo MEDIUMBLOB de una tabla MySql, lo curioso es que el
mismo código para una imagen PDF sí funciona de 100.

Este código con una imagen PDF va muy bien
Code: Select all  Expand view

        IF oRsImg:Fields("HDR_PDF"):Value != NIL
            cFile := oApp:cPathPdfs + "\1C" + SUBSTR(TIME(),1,2) + SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + ".Pdf"

            IF File(cFile)
            Ferase(cFile)
            ENDIF

            //Se graba un  archivo temporal  en disco
         oHandle := FCreate(cFile)
        FWrite(oHandle, HexToStr(oRsImg:Fields("HDR_PDF"):Value))
        FClose(oHandle)

            IF FSize(cFile) > 0
                ShellExecute(0,"Open",cFile,,,1)
            ENDIF
        ENDIF
 


Sin embargo, prácticamente el mismo código no va
Code: Select all  Expand view

            IF oRsFic:Fields("FIC_FOT"):Value != NIL
                cFile := oApp:cPathFotos + "\F" + SUBSTR(TIME(),1,2) + SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + ".Png"

                IF File(cFile)
                    Ferase(cFile)
                ENDIF

                //Se graba un archivo temporal en disco
                oHandle := FCreate(cFile)
            FWrite(oHandle, HexToStr(oRsFic:Fields("FIC_FOT"):Value))
            FClose(oHandle)

                IF FSize(cFile) > 0
                    ShellExecute(0,"Open",cFile,,,1)
                ENDIF
            ENDIF
 


Alguien que pueda darme una idea de que puede ser la diferencia, le busco
le busco y no doy con el error, será la edad? :D

La imagen esta bien grabada en la tabla pues la saco con NaviCat y es correcta pero
con mi código no.

Saludos
Last edited by Armando on Wed Mar 15, 2017 3:55 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sacar imagen PNG de una tabla MySql

Postby Carlos Mora » Wed Mar 15, 2017 9:45 am

Armando,
Aparentemente usas ADO, verdad?
lo único que sospecho podría tener alguna limitación es el obtener el valor de un campo, si este campo es muy grande. No se mucho de ADO pero arriesgo que si la imagen ocupa cierto tamaño,
Code: Select all  Expand view
oRsImg:Fields("HDR_PDF"):Value
podría tener alguna limitación con el tamaño y fallar si es mayor.

¿Que tamaño tiene la imagen? ¿Y el PDF? ¿Has probado con imágenes pequeñas?
Navicat probablemente no use ADO y por eso no falla.

Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Sacar imagen PNG de una tabla MySql

Postby Armando » Wed Mar 15, 2017 3:55 pm

Carlos:

Te agradezco infinitamente tu interés, efectivamente uso ADO
el problema no estaba en el tamaño, eso lo tengo contemplado.

El problema estaba en que para guardar la imagen, que por cierto
es más pequeña que un PDF, estaba utilizando el reemplazo
directo al campo de la tabla al estilo DBFs

Code: Select all  Expand view

    oRsFic:Fields("FIC_FOT"):Value := StrToHex(oFic:FOT)
    oRsFic:UpDate()
 


Al cambiar la forma de actualizar usando un comando de MySql

Code: Select all  Expand view

        cPdfFile := StrToHex(MemoRead(oFic:FOT))

        cCmdSql := "UPDATE " +;
                            "Fichas " +;
                        "SET " +;
                            "FIC_FOT = '" + cPdfFile + "'," +;
                            "FIC_EXT = '" + oFic:EXT + "' " +;
                        "WHERE " +;
                            "FIC_CUR = '" + oFic:CUR + "'"

 


Todo quedó bajo control.

Una vez más te agradezco tu atención y sugerencia.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sacar imagen PNG de una tabla MySql (SOLUCIONADO)

Postby xmanuel » Thu Mar 16, 2017 2:53 pm

Has probado cambiar esto esto?

Code: Select all  Expand view


        oRsFic:Fields("FIC_FOT"):Value := StrToHex(oFic:FOT)
        oRsFic:UpDate()
     
 


Cambirlo a esto?

Code: Select all  Expand view


        oRsFic:Fields("FIC_FOT"):Value := StrToHex(MemoRead(oFic:FOT))
        oRsFic:UpDate()
     
 
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Sacar imagen PNG de una tabla MySql (SOLUCIONADO)

Postby Armando » Thu Mar 16, 2017 4:32 pm

xManuel:

También agradezco tu interés en mi problema, he probado tu
sugerencia quedando así:

Code: Select all  Expand view

    oRsFic:Fields("FIC_FOT"):Value := StrToHex(MemoRead(oFic:FOT))
    oRsFic:Fields("FIC_EXT"):Value := oFic:EXT
    oRsFic:UpDate()
 


Pero no hay de piña, no reclama nada simplemente al sacar la imagen
no la saca.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 7 guests