ReadPixelFast
Übersicht

TestServerBetreff: ReadPixelFast |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
Ich habe ein Problem bei dieser Funktion: Code: [AUSKLAPPEN] Function Oben_Herab()
P=0:I=0 fertig=0 LockBuffer FrontBuffer() While Not fertig<>0 ppp=ReadPixel(0,0) pix=ReadPixel(P,I) If ReadPixelFast(0,0)<>ReadPixelFast(P,I) Then fertig=I P=P+1 If P>img_width Then P=0:I=I+1 If I>img_height Then fertig=-1 Wend UnlockBuffer FrontBuffer() RuntimeError fertig End Function Das Problem ist, dass es schon beim zweiten Pixel (I=1) zurückgibt, dass fertig einen anderen Wert als 0 hat. Mit der Funktion soll in einem Bild nach einer anderen Farbe gesucht werden und zwar Reihe für Reihe. Die Reihe, in der ein andersfarbiger Pixel ist, soll in der Variable fertig gespeichert werden! Das Pixel in der linken oberen Ecke soll transparent sein. Danke im voraus |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
sind die Variablen Img_widht und Img_hight global? Wenn nicht, hat diese bei jedem aufruf der Funktion den Wert 0. ![]() mfg TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
ToeBBetreff: Re: ReadPixelFast |
![]() Antworten mit Zitat ![]() |
---|---|---|
TestServer hat Folgendes geschrieben: Code: [AUSKLAPPEN]
ppp=ReadPixel(0,0)
pix=ReadPixel(P,I) If ReadPixelFast(0,0)<>ReadPixelFast(P,I) Then fertig=I Ich würd erstmal If ppp <> pix then fertig = I schreiben... sonst wird alles doppelt ausgelesen... und dann ppp = ReadPixelFast(0,0) und pix = ReadPixelFast(P,I) ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
TestServer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: sind die Variablen Img_widht und Img_hight global?
Ja sind sie! Zitat: Ich würd erstmal If ppp <> pix then fertig = I schreiben... sonst wird alles doppelt ausgelesen...
und dann ppp = ReadPixelFast(0,0) und pix = ReadPixelFast(P,I) Hab ich geändert, hatte ich eigentlich auch nur zum testen so. |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] While Not fertig<>0
ist doch das gleiche wie Code: [AUSKLAPPEN] While fertig=0
|
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
TestServer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja stimmt, das liefert aber auch nicht das gewünschte Ergebnis. Hier mal das bisschen Code, das ich bisher habe:
Code: [AUSKLAPPEN] Graphics 1024,768,32
SetBuffer BackBuffer() ClsColor 0,255,0 grafik=LoadImage("Gras_1.jpg") Global img_width=ImageWidth(grafik) Global img_height=ImageHeight(grafik) Cls DrawImage grafik,0,0 Flip Global rgb = ReadPixelFast(0,0) trans_r = (rgb Shr 16) And $FF trans_g = (rgb Shr 8) And $FF trans_b = (rgb) And $FF Repeat Cls DrawImage grafik,0,0 Color 255,255,255 Text 750,10,"Bildlänge: " Text 750,20,"Bildhöhe:" Text 900,10,img_width Text 900,20,img_height Text 750,40,"Trans. Farbe:" Text 900,40,trans_r+", "+trans_g+", "+trans_b If MouseHit(2) Then Oben_herab Text 750,120,nix_oh Flip Until KeyHit(1) Function Oben_Herab() P=0:I=0 fertig=0 LockBuffer FrontBuffer() While fertig<>0 ppp=ReadPixelFast(0,0) pix=ReadPixelFast(P,I) If ppp<>pix Then fertig=I P=P+1 If P>img_width Then P=0:I=I+1 If I>img_height Then fertig=-1 Wend UnlockBuffer FrontBuffer() RuntimeError fertig End Function Ausserdem stimmt mir die Variable trans_b so nicht richtig! |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Zeile "ppp=ReadPixelFast(0,0)" würd ich vor die schleife setzen, einmal auslesen reicht bei einem konstanten wert. Aber bei der Kompression von .jpg wirst du da kaum die Farbe wiederfinden die du suchst. Benutz eher .png, das speichert verlustfrei. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
TestServer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Geändert. Ich habe jetzt das Problem gefunden und behoben. Ist irgendwie ein wenig komisch, aber ich musste es jetzt so machen:
Code: [AUSKLAPPEN] LockBuffer FrontBuffer()
Global rgb = ReadPixelFast(0,0) trans_r = (rgb Shr 16) And $FF trans_g = (rgb Shr 8) And $FF trans_b = (rgb) And $FF UnlockBuffer FrontBuffer() MaskImage grafik, trans_r,trans_g,trans_b Cls Flip LockBuffer FrontBuffer() rgb = ReadPixelFast(0,0) UnlockBuffer FrontBuffer() Wenn das Bild schon so transparent geladen wird, schleichen sich keine Fehler ein und es funktioniert jetzt so wie es soll. Vielen Dank für eure Hilfe. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group