XBROWSE PUEDE MOSTRAR JPG

XBROWSE PUEDE MOSTRAR JPG

Postby Vladimir Zorrilla » Fri Mar 06, 2009 4: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
Vladimir Zorrilla
 
Posts: 225
Joined: Tue Feb 28, 2006 4:25 pm
Location: PERU

Re: XBROWSE PUEDE MOSTRAR JPG

Postby Daniel Garcia-Gil » Fri Mar 06, 2009 5: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

Code: Select all  Expand view
#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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: XBROWSE PUEDE MOSTRAR JPG

Postby zazibr » Wed Mar 11, 2009 4: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
zazibr
 
Posts: 71
Joined: Mon Jan 28, 2008 11:18 am
Location: Campo Grande,MS, BRASIL

Re: XBROWSE PUEDE MOSTRAR JPG

Postby Daniel Garcia-Gil » Wed Mar 11, 2009 4:45 pm

Hola Zazibr

Puedes usar la imagen que tu quieras/you can use any imagen/você pode usar qualquer imagem
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: russimicro and 54 guests