FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour RESUELTO, mostrar un archivo JPG con IMAGE sin freeimage.dll
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
RESUELTO, mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Thu Jan 04, 2018 01:25 AM
Buenas noches,

Como podria mostrar un archivo JPG con IMAGE sin tener que usar freeimage.dll, probe con XIMAGE pero
no me muestra la imagen, este es el codigo que uso :

Code (fw): Select all Collapse
@    1,  1 IMAGE oImage SIZE 60, 18 OF oDlg
...
@  14, 75 BTNBMP oBtn2 SIZE 70, 15 OF oDlg;
            2007;
            PROMPT "F2 = Refresca";
            LEFT;
            ACTION ( DownloadImageCaptcha(),;
                     oImage:LoadBmp( cFileCaptcha ) )

...
ACTIVATE DIALOG oDlg;
    ON INIT ( oImage:LoadBmp( cFileCaptcha ) );
    VALID lExit;
    CENTER
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Fri Jan 05, 2018 06:35 AM

The main difference between IMAGE and XIMAGE is that IMAGE uses FreeImage.dll and XIMAGE does not use Freeimage.dll.
If you want to use freeimage.dll, then use IMAGE control and if not use XIMAGE control

Regards



G. N. Rao.

Hyderabad, India
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Fri Jan 05, 2018 03:05 PM
Mr Rao, gracias por responder

Este es el codigo que uso :

Code (fw): Select all Collapse
#xtranslate  cFileCaptcha  =>  GetEnv( "USERPROFILE" ) + "\Downloads\captcha.jpg"

static Function Captcha()
  Local oDlg, oFont
  Local oImage, oSay, oGet, oBtn1, oBtn2
  Local cCode := Space(10)
  Local lExit := .F.
  Local hBmp1 := BMPYES()
  Local hBmp2 := BMPREFRESH()
    
  DownloadImageCaptcha()
  
  DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12 BOLD
    
    DEFINE DIALOG oDlg FROM 0, 0 TO 10.5, 40; 
        TITLE "CAPTCHA"; 
        FONT oFont; 
        STYLE nOr( WS_POPUP,DS_MODALFRAME,WS_CAPTION,WS_VISIBLE )

  @    1,  1 XIMAGE oImage SIZE 60, 18 OF oDlg 
   
  @  2.5,  4 SAY oSay PROMPT "CODIGO :" SIZE 30, 10 
   
  @  3.0,  8 GET oGet VAR cCode SIZE 60, 10 
    
  @  60, 50 BTNBMP oBtn1 SIZE 70, 15 OF oDlg; 
                    2007; 
                    PROMPT "F3 = Acepta";
                    LEFT;
                    ACTION ( lExit := .T., oDlg:End() )
                    
  @  14, 75 BTNBMP oBtn2 SIZE 70, 15 OF oDlg;
            2007;
            PROMPT "F2 = Refresca";
            LEFT;
            ACTION ( DownloadImageCaptcha(),;
                     oImage:SetSource( cFileCaptcha ) )                   
      
  oBtn1:bPainted = {|hDC| DrawBitmap( hDC, hBmp1, 0, 0 )}  
  oBtn2:bPainted = {|hDC| DrawBitmap( hDC, hBmp2, 0, 0 )}
  
  oDlg:bKeydown  = {|nKey| KeyDownCaptcha(oBtn1, oBtn2, nKey)}
  oDlg:lhelpIcon = .F.
      
  ACTIVATE DIALOG oDlg;
    ON INIT ( oImage:SetSource( cFileCaptcha ) );
    VALID lExit;
    CENTER
        
  DeleteObject( hBmp1 ) 
  DeleteObject( hBmp2 ) 
     
Return AllTrim(cCode)

//------------------------------------------//

static Function KeyDownCaptcha( oBtn1, oBtn2, nKey )
    
    if nKey == VK_F2
       Eval(oBtn2:bAction)
    elseif nKey == VK_F3
       Eval(oBtn1:bAction)
    endif   
    
Return Nil

//------------------------------------------//

static Function DownloadImageCaptcha()
    Local cUrl  := "http://contribuyente.seniat.gob.ve/BuscaRif/Captcha.jpg"
  
  URLDOWNLOADTOFILE( 0, cUrl, cFileCaptcha )
 
Return NIL

//------------------------------------------//

DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG,; 
                                                                cUrl AS LPSTR,; 
                                                                cFileName AS LPSTR,; 
                                                                nReserved AS DWORD,; 
                                                                nFnCB AS LONG ); 
    AS LONG PASCAL; 
    FROM "URLDownloadToFileA" LIB "urlmon.dll"


Usando XIMAGE carga la imagen con ON INIT, pero con BTNBMP oBtn2 no hace el Refresh de la imagen si necesito cambiarla.
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Fri Jan 05, 2018 04:26 PM
Can you please change the ACTION clause of oBtn2 like this?
Code (fw): Select all Collapse
            ACTION ( DownloadImageCaptcha(),;
                     oImage:SetSource( "" ), ;
                     oImage:SetSource( cFileCaptcha ) )

I shall be glad if you make this modification and let me know if this is working.
Regards



G. N. Rao.

Hyderabad, India
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Fri Jan 05, 2018 04:56 PM

Mr Rao,

Excelente, funciona muy bien, muchas gracias.

Excellent, it works very well, thank you very much.

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: RESUELTO, mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Sat Jan 06, 2018 01:13 AM
Thanks.

Another advice.
Instead of
Code (fw): Select all Collapse
  @  60, 50 BTNBMP oBtn1 SIZE 70, 15 OF oDlg; 
                    2007; 
                    PROMPT "F3 = Acepta";
                    LEFT;
                    ACTION ( lExit := .T., oDlg:End() )
                    
  @  14, 75 BTNBMP oBtn2 SIZE 70, 15 OF oDlg;
            2007;
            PROMPT "F2 = Refresca";
            LEFT;
            ACTION ( DownloadImageCaptcha(),;
                     oImage:SetSource( cFileCaptcha ) )                   
      
  oBtn1:bPainted = {|hDC| DrawBitmap( hDC, hBmp1, 0, 0 )}  
  oBtn2:bPainted = {|hDC| DrawBitmap( hDC, hBmp2, 0, 0 )}

You better write:
Code (fw): Select all Collapse
  @  60, 50 BTNBMP oBtn1 SIZE 70, 15 OF oDlg; 
                    2007; 
                    PROMPT "F3 = Acepta" RESOURCE hBmp1 ;
                    LEFT;
                    ACTION ( lExit := .T., oDlg:End() )
                    
  @  14, 75 BTNBMP oBtn2 SIZE 70, 15 OF oDlg;
            2007;
            PROMPT "F2 = Refresca" RESOURCE hBmp2 ;
            LEFT;
            ACTION ( DownloadImageCaptcha(),;
                     oImage:SetSource( cFileCaptcha ) )                   
      
  // oBtn1:bPainted = {|hDC| DrawBitmap( hDC, hBmp1, 0, 0 )}  
  // oBtn2:bPainted = {|hDC| DrawBitmap( hDC, hBmp2, 0, 0 )}
Regards



G. N. Rao.

Hyderabad, India
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: RESUELTO, mostrar un archivo JPG con IMAGE sin freeimage.dll
Posted: Sat Jan 06, 2018 05:03 PM

Mr Rao, much better, thanks for the information.

Mr Rao, mucho mejor, gracias por la información.

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com

Continue the discussion