FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour To save an image
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: To save an image [Solved]
Posted: Mon Nov 09, 2015 08:02 PM
your obj files send :-)
new function to save gif files...

GDIPLUSSAVEOCTREEGIF( hbmp, cNameFile )

hbmp -> pointer to gdi+ image
cNamefile-> name to save ( with extension .gif ) pass -> ansitowide( "c:\myfile.gif" )

sample :
Code (fw): Select all Collapse
function saveImgfile(cFile )
local ohBmp := GDIBmp():new(cFile)   
 local   cSave:= cGetfile("graba","*.*") 
      cSave:= alltrim(cSave)
      if Upper(right(cSsave,3)) == "GIF"
         GDIPLUSSAVEOCTREEGIF( ohbmp:hbmp, cSave )
      else
         ohbmp:save(cSave )
      endif
      ohbmp:end()
Return nil


report their results in the test...
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image [Solved]
Posted: Mon Nov 09, 2015 09:03 PM
With the following sample I get the same bad result. What am I missing?

Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL cSrcImage := "c:\fwh\bitmaps\magic.bmp"
    LOCAL cDstImage := "magic.gif"

    ? SAVEIMG( cSrcImage, cDstImage )

    RETURN NIL


FUNCTION SAVEIMG( cSrcFile, cDstFile )

    LOCAL aExt := { "BMP", "JPG", "GIF", "TIF", "PNG" }

    LOCAL aIds := { "{557CF400-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF401-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF402-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF405-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF406-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF403-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF404-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF407-1A04-11D3-9A73-0000F81EF32E}" }

    LOCAL cExt := UPPER( CFILEEXT( cDstFile ) )

    LOCAL nExt := ASCAN( aExt, cExt )

    LOCAL cId := aIds[ nExt ]

    LOCAL hImg

    IF !FILE( cSrcFile )
        RETURN .F.
    ENDIF

    hImg = GDIPLUSIMAGELOADCACHEDFILE( cSrcFile )

    IF cExt != "GIF"
        GDIPLUSIMAGESAVE( hImg, ANSITOWIDE( cDstFile ), ANSITOWIDE( cId ) )
    ELSE
        GDIPLUSSAVEOCTREEGIF( hImg, ANSITOWIDE( cDstFile ) )
    ENDIF

    GDIP_DELETEIMAGE( hImg )

    RETURN .T.


EMG
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: To save an image [Solved]
Posted: Mon Nov 09, 2015 10:35 PM

Enrico . The problem is with magic.bmp . Is bmp PixelFormat8bppIndexed ( not normal bmp ).
I send a new obj file ...

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image [Solved]
Posted: Mon Nov 09, 2015 10:41 PM

Seems to work perfect, thank you! :-)

EMG

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image [Solved]
Posted: Sat Dec 05, 2015 02:18 PM
With the new FWH 15.10 my sample doesn't link anymore:

Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL cSrcImage := "c:\fwh\bitmaps\magic.bmp"
    LOCAL cDstImage := "magic.gif"

    ? SAVEIMG( cSrcImage, cDstImage )

    RETURN NIL


FUNCTION SAVEIMG( cSrcFile, cDstFile )

    LOCAL aExt := { "BMP", "JPG", "GIF", "TIF", "PNG" }

    LOCAL aIds := { "{557CF400-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF401-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF402-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF405-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF406-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF403-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF404-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF407-1A04-11D3-9A73-0000F81EF32E}" }

    LOCAL cExt := UPPER( CFILEEXT( cDstFile ) )

    LOCAL nExt := ASCAN( aExt, cExt )

    LOCAL cId := aIds[ nExt ]

    LOCAL hImg

    IF !FILE( cSrcFile )
        RETURN .F.
    ENDIF

    hImg = GDIPLUSIMAGELOADCACHEDFILE( cSrcFile )

    IF cExt != "GIF"
        GDIPLUSIMAGESAVE( hImg, ANSITOWIDE( cDstFile ), ANSITOWIDE( cId ) )
    ELSE
        GDIPLUSSAVEOCTREEGIF( hImg, ANSITOWIDE( cDstFile ) )
    ENDIF

    GDIP_DELETEIMAGE( hImg )

    RETURN .T.


Code (fw): Select all Collapse
Error: Unresolved external '_HB_FUN_GDIPLUSSAVEOCTREEGIF'


:-)

EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image [Solved]
Posted: Wed Dec 09, 2015 01:38 PM
And the following sample still creates a bad quality GIF:

Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL cSrcImage := "c:\fwh\bitmaps\magic.bmp"
    LOCAL cDstImage := "magic.gif"

    LOCAL oGdi := GDIBmp():New( cSrcImage )

    oGdi:Save( cDstImage )

    oGdi:End()

    RETURN NIL


EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image
Posted: Wed Dec 09, 2015 10:49 PM

Manuel,

any suggestions? :-)

EMG

Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: To save an image
Posted: Thu Dec 10, 2015 05:58 PM

Yes, Enrico .
The function GDIPLUSSAVEOCTREEGIF( hImg, ANSITOWIDE( cDstFile ) ) for recording quality gif is not included in fwh and is not implemented your use in tgdibmp class.
Look your mail for obj file...

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image
Posted: Thu Dec 10, 2015 06:16 PM

Manuel,

I've tried with QColorQuantizer.obj but the result is the same. :-(

EMG

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image
Posted: Thu Dec 10, 2015 06:18 PM
This is what I'm trying:

Code (fw): Select all Collapse
FUNCTION SAVEIMG( cSrcFile, cDstFile )

    LOCAL aExt := { "BMP", "JPG", "GIF", "TIF", "PNG" }

    LOCAL aIds := { "{557CF400-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF401-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF402-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF405-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF406-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF403-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF404-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF407-1A04-11D3-9A73-0000F81EF32E}" }

    LOCAL cExt := UPPER( CFILEEXT( cDstFile ) )

    LOCAL nExt := ASCAN( aExt, cExt )

    LOCAL cId := aIds[ nExt ]

    LOCAL hImg

    IF !FILE( cSrcFile ) THEN RETURN .F.

    hImg = GDIPLUSIMAGELOADCACHEDFILE( cSrcFile )

    GDIPLUSIMAGESAVE( hImg, ANSITOWIDE( cDstFile ), ANSITOWIDE( cId ) )

    GDIP_DELETEIMAGE( hImg )

    RETURN .T.


Any ideas?

EMG
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: To save an image
Posted: Fri Dec 11, 2015 07:41 AM
Enrico

Code (fw): Select all Collapse
FUNCTION SAVEIMG( cSrcFile, cDstFile )

    LOCAL aExt := { "BMP", "JPG", "GIF", "TIF", "PNG" }

    LOCAL aIds := { "{557CF400-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF401-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF402-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF405-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF406-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF403-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF404-1A04-11D3-9A73-0000F81EF32E}",;
                    "{557CF407-1A04-11D3-9A73-0000F81EF32E}" }

    LOCAL cExt := UPPER( CFILEEXT( cDstFile ) )

    LOCAL nExt := ASCAN( aExt, cExt )

    LOCAL cId := aIds[ nExt ]

    LOCAL hImg

    IF !FILE( cSrcFile ) THEN RETURN .F.

    hImg = GDIPLUSIMAGELOADCACHEDFILE( cSrcFile )

  IF cExt != "GIF"
        GDIPLUSIMAGESAVE( hImg, ANSITOWIDE( cDstFile ), ANSITOWIDE( cId ) )
    ELSE
          GDIPLUSSAVEOCTREEGIF( hImg, ANSITOWIDE( cDstFile ) )  // I'm not sure  but I think plenty ANSITOWIDE()  
    ENDIF

    GDIP_DELETEIMAGE( hImg )

    RETURN .T.
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image
Posted: Fri Dec 11, 2015 09:28 AM

Manuel,

sorry but the program does nothing. :-(

EMG

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image
Posted: Fri Dec 11, 2015 09:51 AM

The program crashes at GDIPLUSSAVEOCTREEGIF() without error messages.

EMG

Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: To save an image
Posted: Fri Dec 11, 2015 10:07 AM

Enrico look your mail ...
For me is good . :-)

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: To save an image
Posted: Fri Dec 11, 2015 10:23 AM

Manuel,

is the OBJ for xHarbour?

EMG