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
Forum Rules
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
How to set the Excel cell...
by
dodgex
[
Today
at 06:09:53 am]
AdvancedHTTPServer: A Go-...
by
Boleeman
[
Today
at 05:02:18 am]
Olympic Rings (Interleave...
by
Boleeman
[
Today
at 04:28:24 am]
Want to meet new people i...
by
Angelikaethen
[
Today
at 04:14:16 am]
Unit decfloat
by
MathMan
[January 17, 2026, 08:29:41 pm]
Funny
by
Ten_Mile_Hike
[January 17, 2026, 08:18:39 pm]
New book on Object Pascal
by
Ten_Mile_Hike
[January 17, 2026, 07:34:06 pm]
New open source component...
by
salvadordf
[January 17, 2026, 06:26:56 pm]
Strings in Free Pascal: I...
by
Bart
[January 17, 2026, 05:33:17 pm]
Desenvolvimento visual pa...
by
sc10tech
[January 17, 2026, 05:17:58 pm]
Como compilar uma lib par...
by
sc10tech
[January 17, 2026, 05:05:14 pm]
The compiler fails to war...
by
AlexanderK
[January 17, 2026, 04:35:04 pm]
Fast Canvas Library V1.05...
by
Gigatron
[January 17, 2026, 02:34:26 pm]
CudaText editor (written ...
by
andersonscinfo
[January 17, 2026, 01:57:57 pm]
AVRPascal – free code edi...
by
ackarwow
[January 17, 2026, 10:57:09 am]
RTTIPropertyGrid expand
by
ig
[January 17, 2026, 09:11:09 am]
Embedded qss stylesheets ...
by
zeljko
[January 17, 2026, 09:05:42 am]
Seven Kings (inc)
by
speter
[January 17, 2026, 08:22:44 am]
about lazarus and android
by
zzzzzzz7
[January 17, 2026, 04:06:51 am]
Remove region adjacent to...
by
n7800
[January 17, 2026, 02:33:35 am]
Adjacent rectangles not a...
by
ron.dunn
[January 17, 2026, 01:31:51 am]
Tutorial on creating a co...
by
Roland57
[January 16, 2026, 08:29:55 pm]
Newly revised TlistBox in...
by
wp
[January 16, 2026, 06:23:04 pm]
How to forward a Class in...
by
Hartmut
[January 16, 2026, 05:21:35 pm]
How to low level manage S...
by
Tommi
[January 16, 2026, 04:05:54 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: Fast pixel access (Read 2525 times)
user5
Sr. Member
Posts: 418
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: 418
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: 418
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: 13333
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: 418
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: 418
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: 418
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: 328
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