Page 1 of 1
Gradient Colors
Posted: Sat Aug 31, 2024 5:02 pm
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) ?
Re: Gradient Colors
Posted: Sun Sep 01, 2024 3:06 pm
by karinha
Re: Gradient Colors
Posted: Sun Sep 01, 2024 6:30 pm
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

Re: Gradient Colors
Posted: Mon Sep 02, 2024 4:50 am
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
Re: Gradient Colors
Posted: Mon Sep 02, 2024 7:21 am
by Natter
Thank you, Rao!
Re: Gradient Colors
Posted: Mon Sep 02, 2024 2:34 pm
by Jimmy
hi,
i got this Error
Imgpixel.prg(9) Error E0030 Syntax error "syntax error at 'ACLRS'"
what i´m doing wrong

Re: Gradient Colors
Posted: Mon Sep 02, 2024 2:43 pm
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

Regards, saludos.
Re: Gradient Colors
Posted: Mon Sep 02, 2024 3:07 pm
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.
Re: Gradient Colors
Posted: Mon Sep 02, 2024 6:29 pm
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)
Re: Gradient Colors
Posted: Mon Sep 02, 2024 7:06 pm
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.
Re: Gradient Colors
Posted: Mon Sep 02, 2024 9:08 pm
by nageswaragunupudi
Code: Select all | Expand
cTxt := {aClrs}
MEMOWRIT( cFileTxt, FW_ValToExp( cTxt ) )
is not correct:
This is correct: