Page 1 of 1

Como gravar uma imagem usando freeimage.dll

Posted: Sat Nov 11, 2006 6:40 pm
by Rossine
Olá,

É possível, usando FREEIMAGE.DLL capturar a imagem que esta em uma determinada janela (dialog/window) e gravá-la no formato .JPG ?

Obrigado,

Rossine.

Posted: Mon Nov 13, 2006 9:01 am
by Antonio Linares
Rossine,

Please review Class TImage Method SaveImage( cFile, nFormat, nQuality ) source code.

// 0 -> Bmp
// 2 -> Jpg
// 13 -> Png

Posted: Mon Nov 13, 2006 2:00 pm
by Rossine
Olá Antonio, gracias por responder.

O código abaixo não funciona :cry:

Code: Select all


#include "FiveWin.ch"

FUNCTION MAIN()

    LOCAL oDlg, oImg

    DEFINE DIALOG oDlg SIZE 700, 500

    @ 2, 1 IMAGE oImg FILE "FIVEWIN.BMP" SIZE 200, 200 ADJUST

    @3, 2 say "Texto Teste" color rgb( 255,255,255), rgb(255,0,0)

    @ 0,  1 BUTTON "Save"  ACTION msgstop( iif( oImg:SaveImage( "TESTE", 2 ), "Image saved", "Image not saved. Why ??" ) )
    @ 0,  7 BUTTON "Load"  ACTION msgstop( iif( oImg:LoadImage( , "TESTE.JPG" ), oImg:refresh(), "Image not load" ) )
    @ 0, 13 BUTTON "Print" ACTION PRINT( oImg )

    ACTIVATE DIALOG oDlg CENTERED

    RETURN NIL

STATIC FUNCTION PRINT( oImg )

    LOCAL oPrn

    PRINT oPrn PREVIEW MODAL
        PAGE
            oPrn:SayImage( 0, 0, oImg, oPrn:nHorzRes(), oPrn:nVertRes() )
        ENDPAGE
    ENDPRINT

    RETURN NIL
Na verdade o que preciso é capturar a imagem de uma dialog/window e salvá-la em disco, ou seja, não só o "FIVEWIN.BMP" transformá-lo em "TESTE.JPG" e sim o <FIVEWIN.BMP + SAY "Texto Teste">

Veja abaixo como preciso que salve o TESTE.JPG:

Image

Como fazer isto funcionar ?

Obrigado,

Rossine.

Posted: Tue Nov 14, 2006 8:23 pm
by Rossine
Olá Pessoal,

Eu realmente estou precisando muito disto. Alguém poderia me ajudar ??

Obrigado,

Rossine.

Posted: Tue Nov 14, 2006 9:20 pm
by Ruben Fernandez
Rossine:
Aqui va un ejemplo, no lo probe, pero se que funciona.
(Usando FreeImade.DLL)

#include "FiveWin.ch"

#xcommand DEFINE IMAGE [<oBmp>] ;
[ <resource: RESOURCE, NAME, RESNAME> <cResName> ] ;
[ <file: FILE, FILENAME, DISK> <cBmpFile> ] ;
[ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
=> ;
<oBmp>:=TImage():Define( <cResName>, <cBmpFile>, <oWnd> )

Procedure Main()
LOCAL oBmp,oDlg

DEFINE DIALOG oDlg FROM 0,0 TO 21,65 TITLE "Test FreeImage"

DEFINE IMAGE oBmp FILE "Test.jpg" OF oDlg

oDlg:bPainted:={|hDC|PalBmpDraw(hDC,0,0,oBmp:hBitmap,,,0)}

ACTIVATE DIALOG oDlg CENTER

MsgInfo( "About to save the image to Test.png ")

oBmp:SaveImage( "Test2.png", 13)

MsgInfo( "Done!" )

RETURN


Saludos

Ruben Fernandez

Posted: Tue Nov 14, 2006 9:50 pm
by Antonio Linares
Rossine,

Code: Select all

...
    @ 0,  1 BUTTON "Save"  ACTION msgstop( iif( SaveJPG( oImg ), "Image saved", "Image not saved. Why ??" ) ) 
...
function SaveJPG( oImg )

   local hBitmap := oImg:hBitmap
   local lResult := .t.
   
   oImg:hBitmap = WndBitmap( oImg:hWnd )
   lResult = oImg:SaveImage( "TESTE.JPG", 2 )
   DeleteObject( oImg:hBitmap )
   oImg:hBitmap = hBitmap

return lResult

Posted: Wed Nov 15, 2006 1:27 pm
by Rossine
Olá Ruben e Antonio, Gracias pelos exemplos :wink:

Antonio, a função oWnd:SaveToBmp( ".\test.bmp" ) faz o que eu estou precisando, mas gostaria que fosse ".JPG", e usando oWnd:SaveToBmp( ".\test.bmp" ) não consigo abrir o arquivo "TEST.BMP" dentro do paint de windows. Me retorna a mensagem "Este não é um arquivo bitmap válido ou não há suporte para o formato atualmente" Porque ?

Gracias e saludos,

Rossine.

Posted: Wed Nov 15, 2006 4:34 pm
by Antonio Linares
Rossine,

> não consigo abrir o arquivo "TEST.BMP" dentro do paint de windows.

Has probado a abrirlo con otros programas ó a visualizarlo con XP ?

Posted: Thu Nov 16, 2006 12:21 pm
by Rossine
Olá Antonio,

> Has probado a abrirlo con otros programas...

VB6 e Delphi7, os dois acusaram "Invalid picture"

>... ó a visualizarlo con XP ?

Sim, XP SP1 . Testando tambem com WIN98 + paint ocorre o mesmo erro.

Gracias, saludos,

Rossine.

Posted: Thu Nov 16, 2006 12:28 pm
by Antonio Linares
Rossine,

Este ejemplo funciona correctamente y el bitmap creado se puede abrir con cualquier utilidad:

Code: Select all

#include "FiveWin.ch"

FUNCTION Main() 

   LOCAL oWnd 

   DEFINE WINDOW oWnd TITLE "Progress" 

   ACTIVATE WINDOW oWnd ;
      ON CLICK oWnd:SaveToBmp( "test.bmp" )

RETURN NIL 
Image

Posted: Fri Nov 17, 2006 10:35 am
by Rossine
Olá Antonio,

Veja se você consegue abrir a imagem que esta anexa neste arquivo.
Já tentei abrí-la no paint / photopaint / office picture paint e não consigo :cry:

http://geocities.yahoo.com.br/qiinforma ... 0/TEST.ZIP

Gracias,

Rossine.

Posted: Fri Nov 17, 2006 1:00 pm
by Antonio Linares
Rossine,

Que build de FWH estás usando ?

Posted: Fri Nov 17, 2006 1:10 pm
by Rossine
Antonio, fwh 2.7 fevereiro/2006.

Gracias,

Rossine.

Posted: Fri Nov 17, 2006 5:01 pm
by Antonio Linares
Rossine,

El ejemplo que te he indicado funciona correctamente con FWH 2.8 y el bitmap es un bitmap estandard. No se que puede estar ocurriéndote.