Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Programming
»
Graphics and Multimedia
»
Graphics
(Moderator:
Ask
) »
Fast pixel access
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
WIKI Timeout issues
Please read here if you have trouble connecting to the wiki
Recent
VOLKSWAGEN из Кореи
by
BruceDirty
[
Today
at 05:37:30 pm]
Output buffer to audio.
by
Fred vS
[
Today
at 05:34:55 pm]
Linux - partly off topic...
by
Martin_fr
[
Today
at 05:23:49 pm]
Firebird 5.02. - the root...
by
rvk
[
Today
at 04:55:39 pm]
[ZeosDBO/TZQuery] Passing...
by
rdxdt
[
Today
at 04:54:10 pm]
How do I drag/move a fram...
by
Warfley
[
Today
at 04:00:05 pm]
TCombobox causes Access V...
by
Hansaplast
[
Today
at 03:47:15 pm]
Nothing but chaotic attem...
by
Nicole
[
Today
at 03:18:37 pm]
TimageList - Lazarus 4 wi...
by
Nicole
[
Today
at 03:10:55 pm]
InstallAware 2025 Sources...
by
docno
[
Today
at 02:45:52 pm]
Fast Canvas Library V1.0
by
TBMan
[
Today
at 02:38:56 pm]
I created a Hello World p...
by
paweld
[
Today
at 01:56:08 pm]
Reading Embeded PO Files
by
Bart
[
Today
at 01:34:25 pm]
32-Bit MS-DOS Application...
by
marcov
[
Today
at 01:23:34 pm]
functional IF
by
creaothceann
[
Today
at 01:09:43 pm]
What is your favorite "bu...
by
cdbc
[
Today
at 11:32:49 am]
TStringGrid.VisibleColCou...
by
wp
[
Today
at 10:57:24 am]
Gateway Timeouts
by
Marc
[
Today
at 09:58:47 am]
Animated toggle switch
by
cdbc
[
Today
at 08:41:11 am]
StringGrid - How to force...
by
CM630
[
Today
at 07:50:59 am]
Pasdoc and Lazarus
by
440bx
[
Today
at 05:10:23 am]
[AGREED] processing web f...
by
Leledumbo
[
Today
at 04:28:13 am]
Testers required for LAMW...
by
nicelybrewed
[
Today
at 12:38:21 am]
IDE/ New Plugin
by
anderbelluno
[
Today
at 12:19:10 am]
Compiler can't find a (fa...
by
cdbc
[June 12, 2025, 11:35:34 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: Fast pixel access (Read 2271 times)
user5
Sr. Member
Posts: 377
Fast pixel access
«
on:
November 28, 2019, 02:00:15 pm »
In the code below lines 1 and 2 together do the same thing as line 3 except of course line 3 would be much slower if I used it in the code instead of lines 1 and 2. Line 1 uses a raw image fast pixel access method that is similar to BGRABitmap.
Line 5 accesses pixels next to x and y and I was wondering if anyone knows how I could use the fast pixel method to accomplish the same thing but at a faster speed.
Thanks and happy Thanksgiving morning!
Code: Pascal
[Select]
[+]
[-]
for
y
:
=
starty
to
(
mybitmap
.
height
-
1
)
do
begin
PixelPtr
:
=
PixelRowPtr
;
for
x
:
=
startx
to
(
mybitmap
.
width
-
1
)
do
begin
tempcolor
:
=
PixelPtr
^
;
//line 1
tempcolor
:
=
SwapRedBlue
(
tempcolor
)
;
//line 2
tempcolor
:
=
mybitmap
.
canvas
.
pixels
[
x
,
y
]
;
//line 3
newcolor
:
=
mybitmap
.
canvas
.
pixels
[
x
+
1
,
y
+
1
]
;
//line 5
end
;
end
;
Logged
user5
Sr. Member
Posts: 377
Re: Fast pixel access
«
Reply #1 on:
November 28, 2019, 02:04:31 pm »
Oops. Line 5 should have been: newcolor := mybitmap.canvas.pixels[x + 1,y]; //to access the pixel next to x
Logged
winni
Hero Member
Posts: 3197
Re: Fast pixel access
«
Reply #2 on:
November 28, 2019, 03:44:11 pm »
Hi!
There is a page about fast direct pixel access in Lazarus with a lot of examples:
https://wiki.freepascal.org/Fast_direct_pixel_access
No thanksgiving here tomorrow - just another Friday for Future.
Winni
Logged
user5
Sr. Member
Posts: 377
Re: Fast pixel access
«
Reply #3 on:
November 28, 2019, 07:31:32 pm »
I checked out the page you mentioned and it led me to some other sites but it seems like not enough information is provided. For example, I found the following code but I can't get it to work. "colGreen" from what I understand is supposed to be a TFPColor but the compiler wouldn't let me define something like var newcolor:TFPColor. I put in all the correct headers.
Code: Pascal
[Select]
[+]
[-]
procedure
TForm1
.
Button4Click
(
Sender
:
TObject
)
;
var
b
:
TBitmap
;
t
:
TLazIntfImage
;
begin
b
:
=
TBitmap
.
Create
;
try
b
.
LoadFromFile
(
'test.bmp'
)
;
t
:
=
b
.
CreateIntfImage
;
// Read and/or write to the pixels
t
.
Colors
[
10
,
20
]
:
=
colGreen
;
//This won't compile.
b
.
LoadFromIntfImage
(
t
)
;
finally
t
.
Free
;
b
.
Free
;
end
;
end
;
Logged
wp
Hero Member
Posts: 12851
Re: Fast pixel access
«
Reply #4 on:
November 28, 2019, 07:40:32 pm »
Just missing the "uses":
Code: Pascal
[Select]
[+]
[-]
uses
fpImage
,
// colGreen, TFPColor
IntfGraphics
;
// TLazIntfImage
Logged
user5
Sr. Member
Posts: 377
Re: Fast pixel access
«
Reply #5 on:
November 28, 2019, 07:48:58 pm »
You are absolutely correct. I was missing FPImage in the "uses" clause. It's working now. The old slow pixel method took 7 seconds to fill a 1053x655 image with the color red but the TLazIntfImage method did it almost instantaneously. Wow! I wonder if there's anything even faster. Thanks a lot.
Logged
user5
Sr. Member
Posts: 377
Re: Fast pixel access
«
Reply #6 on:
November 28, 2019, 07:52:33 pm »
Does the TFPColor "colRed" equal "clRed" or do I need a conversion of some kind?
Logged
user5
Sr. Member
Posts: 377
Re: Fast pixel access
«
Reply #7 on:
November 28, 2019, 08:08:13 pm »
Okay... I found the conversion function which converts a TColor to a TFPColor so that: newcolor := TColorToFPColor(tempcolor); newcolor is a TFPColor and tempcolor is a TColor. I also found the function which converts a TFPColor to a TColor. Thanks again for taking the time to help me. I really appreciate it. This seems to be what I need.
Logged
Soner
Sr. Member
Posts: 319
Re: Fast pixel access
«
Reply #8 on:
November 28, 2019, 08:52:23 pm »
Don't forget, TBitmap has Scanline property now. As someone the wikipage wrote, then tbitmap has not this property.
NOw, you can manipulate Tbitmap without TLazIntfImage faster.
Logged
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Programming
»
Graphics and Multimedia
»
Graphics
(Moderator:
Ask
) »
Fast pixel access
TinyPortal
© 2005-2018