Gradient Colors

Post Reply
Natter
Posts: 1241
Joined: Mon May 14, 2007 9:49 am

Gradient Colors

Post by Natter »

Hi,

There is a .png file - a gradient of some color (for example, red)
https://cloud.mail.ru/public/NipP/v5trqrynQ

Is it possible to get a list of colors from this file (from left to right) ?
User avatar
karinha
Posts: 7935
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Gradient Colors

Post by karinha »

Maybe,

https://encycolorpedia.pt/ff0000

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Natter
Posts: 1241
Joined: Mon May 14, 2007 9:49 am

Re: Gradient Colors

Post by Natter »

I've seen it all. But I haven't figured out how to use it. The only thing that comes to mind is to open bitmap's gradients in XImage and read the pixel colors from DC. Save the results to the database :shock:
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Gradient Colors

Post by nageswaragunupudi »

Code: Select all | Expand

function ImagePixels()

   local hBmp  := FW_ReadImage( nil, "https://thumb.cloud.mail.ru/weblink/thumb/xw1/NipP/v5trqrynQ" )[ 1 ]
   local aClrs

   aClrs := ReadBmpPixels( hBmp )
   DeleteObject( hBmp )

   XBROWSER aClrs SHOW SLNUM

return nil

static function ReadBmpPixels( hBmp )

   local hBmpOld, hDC0, hDC
   local nBmpWidth  := nBmpWidth( hBmp )
   local nBmpHeight := nBmpHeight( hBmp )
   local nRow, nCol, nClr, aCol
   local aClrs := {}

   hDC0     := GetDC(  0 )
   hDC      := CreateCompatibleDC( HDC0 )
   hBmpOld  := SelectObject( hDC, hBmp )

   nRow     := 3 // can be any
   AAdd( aClrs,  aCol := { 1, 1, nClr := GetPixel( hDC, 1, 1 ), cClrToCode( nClr ) } )
   for nCol := 2 to nBmpWidth - 1
      nClr     := GetPixel( hDC, nCol, nRow )
      if nClr == aCol[ 3 ]
         aCol[ 2 ] := nCol
      else
         aCol  := { nCol, nCol, nClr, cClrToCode( nClr ) }
         AAdd( aClrs, aCol )
      endif
   next nCol

   SelectObject( hDC, hBmpOld )
   Deletedc( hdc )
   ReleaseDC( 0, hDC0 )

return aClrs
Regards

G. N. Rao.
Hyderabad, India
Natter
Posts: 1241
Joined: Mon May 14, 2007 9:49 am

Re: Gradient Colors

Post by Natter »

Thank you, Rao!
User avatar
Jimmy
Posts: 1740
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany
Has thanked: 2 times

Re: Gradient Colors

Post by Jimmy »

hi,
i got this Error
Imgpixel.prg(9) Error E0030 Syntax error "syntax error at 'ACLRS'"
what i´m doing wrong :?:
greeting,
Jimmy
User avatar
karinha
Posts: 7935
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Gradient Colors

Post by karinha »

Jimmy wrote:hi,
i got this Error
Imgpixel.prg(9) Error E0030 Syntax error "syntax error at 'ACLRS'"
what i´m doing wrong :?:

Code: Select all | Expand

#include "FiveWin.ch"
 

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
Posts: 7935
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Gradient Colors

Post by karinha »

Master Nages, how do I record in a .TXT or .DBF?

Maestro Nages, ¿cómo grabo en un .TXT o .DBF?

Gracias, tks.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Gradient Colors

Post by nageswaragunupudi »

Are you asking how to store an array as text in a txt file or dbf?

Code: Select all | Expand

MEMOWRIT( cFileTxt, FW_ValToExp( aAnyArrayData ) )
// later
cText := MEMOREAD( cFileTxt )
aArray := &c   // or &(c)
Regards

G. N. Rao.
Hyderabad, India
User avatar
karinha
Posts: 7935
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Gradient Colors

Post by karinha »

Thanks/Gracias Master Nages.

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION ImagePixels()

   LOCAL hBmp := FW_ReadImage( NIL, "https://thumb.cloud.mail.ru/weblink/thumb/xw1/NipP/v5trqrynQ" )[ 1 ]
   LOCAL aClrs, cFileTxt := "NAGES.TXT", cTxt, cText

   aClrs := ReadBmpPixels( hBmp )

   DeleteObject( hBmp )

   XBROWSER aClrs SHOW SLNUM

   cTxt := {aClrs}

   MEMOWRIT( cFileTxt, FW_ValToExp( cTxt ) )

   WinExec( "Notepad.exe " + cFileTxt )

RETURN NIL

STATIC FUNCTION ReadBmpPixels( hBmp )

   LOCAL hBmpOld, hDC0, hDC
   LOCAL nBmpWidth  := nBmpWidth( hBmp )
   LOCAL nBmpHeight := nBmpHeight( hBmp )
   LOCAL nRow, nCol, nClr, aCol
   LOCAL aClrs := {}

   hDC0    := GetDC(  0 )
   hDC     := CreateCompatibleDC( HDC0 )
   hBmpOld := SelectObject( hDC, hBmp )

   nRow    := 3 // can be any

   AAdd( aClrs,  aCol := { 1, 1, nClr := GetPixel( hDC, 1, 1 ), cClrToCode( nClr ) } )

   FOR nCol := 2 TO nBmpWidth - 1

      nClr     := GetPixel( hDC, nCol, nRow )

      IF nClr == aCol[ 3 ]

         aCol[ 2 ] := nCol

      ELSE

         aCol  := { nCol, nCol, nClr, cClrToCode( nClr ) }

         AAdd( aClrs, aCol )

      ENDIF

   NEXT nCol

   SelectObject( hDC, hBmpOld )

   Deletedc( hdc )
   ReleaseDC( 0, hDC0 )

RETURN aClrs

// FIN / END
 
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Gradient Colors

Post by nageswaragunupudi »

Code: Select all | Expand

  cTxt := {aClrs}

   MEMOWRIT( cFileTxt, FW_ValToExp( cTxt ) )
 
is not correct:

This is correct:

Code: Select all | Expand

MEMOWRIT( cFileTxt, FW_ValToExp( aClrs ) )
Regards

G. N. Rao.
Hyderabad, India
Post Reply