FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour XBROWSE PUEDE MOSTRAR JPG
Posts: 225
Joined: Tue Feb 28, 2006 04:25 PM
XBROWSE PUEDE MOSTRAR JPG
Posted: Fri Mar 06, 2009 04:48 AM

EN XBROWSE PARA MOSTRAR IMAGENES SE PONE EN UN ARREGLO TODO LOS BITMAPS

      oCol:AddBmpFile("bitmap\"+alltrim(cMcrut[j])+".bmp")

Y LUEGO CON UNA CONDICION SE PINTA DEVOLVIENDO EL REGISTRO LA UBICACION DEL ARREGLO
PARA JALAR LA IMAGEN

         oBrow:aCols[xx]:bBmpData   := &("{ || "+cMcrut+" }")

PERO COMO SE PUEDE MOSTRAR FOTOS DE UNA LISTA DE ALUMNOS GRABADAS EN UNA BASE DE MYSQL

PREGUNTAS
XBROWSE PUEDE MOSTRAR JPG

YO TENGO UNA FUNCION QUE ME LEE LA IMAGEN DE LA BD LA DESENCRIPTA CON FMimeDec(cTemp,cTemp2)
Y CREA UN JPG

BUENO SUPONGO QUE TENDRIA QUE PRIMERO BAJAR TODAS LAS IMAGENES A UNA CARPETA
Y LUEGO MOSTRARLAS CON XBROWSE

HAY UNA FORMA DE HACERLO DIRECTO DE LA BD

GRACIAS POR LA AYUDA

Func vzAbrirTImagen(campo) //Para abrir una imagen GRABADA en la BD
local cMemo:='',cTemp:='',cTemp2:=""
SysRefresh()
CursorWait()
cMemo := vz(campo) //::oRsImagenes:Fields("imagen"):Value
if !empty(cMemo)
cTemp = 'temp\temp002.tmp'
MEMOWRIT(cTemp,cMemo)
if file(cTemp)
cTemp2 = 'temp\temp003.JPG'
FMimeDec(cTemp,cTemp2) //Esta es la funcion que nos permite leer la imagen en la base de datos
if !file(cTemp2)
//MsgAlert("No ha sido posible leer la imagen de la base de datos" )
endif
else
// MsgInfo("No existe la imagen del documento")
endif
else
//MsgInfo("No es posible abrir la imagen del Documento" )
EndIf
SysRefresh()
CursorArrow()
Return( cTemp2 )

ME INTERESA FW Y XHB POR SER OPEN SOURCE
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: XBROWSE PUEDE MOSTRAR JPG
Posted: Fri Mar 06, 2009 05:58 AM
Hola Vladimir
Vladimir Zorrilla wrote:PREGUNTAS
XBROWSE PUEDE MOSTRAR JPG

YO TENGO UNA FUNCION QUE ME LEE LA IMAGEN DE LA BD LA DESENCRIPTA CON FMimeDec(cTemp,cTemp2)
Y CREA UN JPG

BUENO SUPONGO QUE TENDRIA QUE PRIMERO BAJAR TODAS LAS IMAGENES A UNA CARPETA
Y LUEGO MOSTRARLAS CON XBROWSE

HAY UNA FORMA DE HACERLO DIRECTO DE LA BD
Si puedes mostrar jpg y otros formatos tambien, necesitas 2 cosas cargar freeimage.dll y el methodo de las columnas oCol:AddBmpHandle( hBitmap )

debes leer primero todas las imagenes para cargarlas en el array respectivo a la columna

desde mi punto de vista creo que es mejor crear un espacio aparte (frame) para mostar las imagenes las cuales puedes ir leyendo a medida que avanzas enn el browse si necesidad de descargarlas todas, igualmente te dejo el ejemplo de como asignar jpg u otro formato a una columna de xbrowse

la DBF usada es la misma de los samples de FW, y dibujo.jpg puede ser cualquier archivo que tu elijas
#include "FiveWin.ch"
#include "xbrowse.ch"

REQUEST DBFCDX

static hLib

function main()

local oDlg
local oBrw
local nI
local cAlias
local hBitMap

hLib := LoadLibrary( "freeimage.dll" )

cAlias = "customer"

hBitmap = FILoadImg( AllTrim( "dibujo.jpg" ) )

use customer alias (cAlias) new via "dbfcdx"


   DEFINE DIALOG oDlg title "TEST" size 600,400

   @ 0,0 XBROWSE oBrw OF oDlg ;
      COLUMNS "First", "Salary", "state", "age" ;
      HEADERS nil, nil, "State", "AGE" ;
      JUSTIFY .F., nil, .F., .T. ;
      ALIAS cAlias AUTOSORT LINES CELL

    oBrw:nMarqueeStyle := 0
    oBrw:nRowDividerStyle:= 0
    oBrw:nColDividerStyle:=0
    oBrw:nRowHeight := nBmpHeight( hBitmap ) + 5
    

        oBrw:aCols[ 1 ]:AddBmpHandle( hBitmap )
        oBrw:aCols[ 1 ]:bBmpData := {|| 1 }
        
   oDlg:oClient := oBrw
   
   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED ON INIT oDlg:Resize()

FreeLibrary( hLib )

return nil 

#define CBM_INIT       4
#define DIB_RGB_COLORS 0

static function FILOADIMG( cFile )

   local nFormat, hDib, hInfoH, hInfo, hBits, hWnd, hDC, hBmp

   if Upper( cFileExt( cFile ) ) = "BMP"
      return ReadBitmap( 0, cFile )
   endif

   nFormat = FIGETFILETYPE( cFile, 0 )
   hDib    = FILOAD( nFormat, cFile, 0 )
   hInfoH  = FIGETINFOHEADER( hDib )
   hInfo   = FIGETINFO( hDib )
   hBits   = FIGETBITS( hDib )
   hWnd    = GETDESKTOPWINDOW()

   hDC = GETDC( hWnd )

   hBmp = CreateDiBitmap( hDC, hInfoH, CBM_INIT, hBits, hInfo, DIB_RGB_COLORS )

   ReleaseDC( hWnd, hDC )

   FIUNLOAD( hDib )


return hBmp


DLL32 FUNCTION FIGETFILETYPE( cFileName AS LPSTR, nSize AS LONG ) AS LONG ;
      PASCAL FROM "_FreeImage_GetFileType@8" LIB hLib

DLL32 FUNCTION FILOAD( nFormat AS LONG, cFileName AS LPSTR, nFlags AS LONG ) AS LONG ;
      PASCAL FROM "_FreeImage_Load@12" LIB hLib

DLL32 FUNCTION FIGETINFOHEADER( hDib AS LONG ) AS LONG ;
      PASCAL FROM "_FreeImage_GetInfoHeader@4" LIB hLib

DLL32 FUNCTION CREATEDIBITMAP( hDC AS LONG, hInfoH AS LONG, nFlags AS LONG, hBits AS LONG, hInfo AS LONG, nUsage AS LONG ) AS LONG ;
      PASCAL FROM "CreateDIBitmap" LIB "gdi32.dll"

DLL32 FUNCTION FIGETINFO( hDib AS LONG ) AS LONG ;
      PASCAL FROM "_FreeImage_GetInfo@4" LIB hLib

DLL32 FUNCTION FIGETBITS( hDib AS LONG ) AS LONG ;
      PASCAL FROM "_FreeImage_GetBits@4" LIB hLib
      
DLL32 FUNCTION FIUNLOAD( hDib AS LONG ) AS VOID ;
      PASCAL FROM "_FreeImage_Unload@4" LIB hLib
Posts: 71
Joined: Mon Jan 28, 2008 11:18 AM
Re: XBROWSE PUEDE MOSTRAR JPG
Posted: Wed Mar 11, 2009 04:01 PM

poderia postar a imagem dibujo.jpg so pra testar aqui ?

obrigado

Daniel Lopes Filho - Campo Grande,MS,Brasil
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6693) + gtwvw + fw 10.2 + vsx e
fw pcc (ainda não usei)
msn : zazibr@hotmail.com
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: XBROWSE PUEDE MOSTRAR JPG
Posted: Wed Mar 11, 2009 04:45 PM

Hola Zazibr

Puedes usar la imagen que tu quieras/you can use any imagen/você pode usar qualquer imagem

Continue the discussion