ReadPixelFast ungenau?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Tennisball

Betreff: ReadPixelFast ungenau?

BeitragSa, Jul 11, 2009 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ist ReadPixelFast ungenau?
Denn: Ich habe einen RGB 255,0,0 Pixel, dann lass ich RPF drüber, Ergebnis: "-524288".
Dann mache ich folgendes, um die RGB Werte zu bekommen (Code aus der OH):
Code: [AUSKLAPPEN]
R = (rgb And $FF0000)/$10000
G = (rgb And $FF00)/$100
B = rgb And $FF

Ergebnis: R = 248
Sad

Woran kann das liegen?

Xeres

Moderator

BeitragSa, Jul 11, 2009 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn das Bild in einem verlustbehafteten Format wie jpg gespeichert wurde, sind die Farben in der Datei u.U. verfälscht.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

BeitragSa, Jul 11, 2009 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
*.png und *.bmp klappen beide nicht.

Xeres

Moderator

BeitragSa, Jul 11, 2009 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann ist der Pixel nicht in der richtigen Farbe - oder du machst was ganz seltsames.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

BeitragSa, Jul 11, 2009 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Paint.Net sagt : RGB 255,0,0 - Hex FF0000
(also ist der Pixel richtig)

Mein Code sagt:
Code: [AUSKLAPPEN]
LockBuffer()
rgb = ReadPixelFast(x,y)
UnlockBuffer()
      
SetBuffer FrontBuffer()

R = (rgb And $FF0000)/$10000
G = (rgb And $FF00)/$100
B = rgb And $FF


(was ganz seltsames mach ich ja auch nicht oder?)

Auch ohne das SetBuffer FrontBuffer() tritt der Fehler auf.

Xeres

Moderator

BeitragSa, Jul 11, 2009 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder du gibst ReadpixelFast den passenden Buffer mit z.B. den Imagebuffer oder du stellst ihn vorher ein - danach hat das keinen Sinn.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

BeitragSa, Jul 11, 2009 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das SetBuffer FrontBuffer() war nur dazu da, um nachher nicht in den Imagebuffer zu malen. Smile
Davor steht ein SetBuffer ImageBuffer(), habe ich vergessen mit zu kopieren.

Edit: Wäre ja sonst auch komisch, dass er was teilweise Richtiges bringt.
  • Zuletzt bearbeitet von Tennisball am Sa, Jul 11, 2009 22:00, insgesamt einmal bearbeitet

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Jul 11, 2009 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal ImageBuffer etwas genauer an. Ansonsten gib und etwas mehr Code, denn so fehlt immer irgend was, und zwar meistens immer das relevante zur Fehlersuche.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xeres

Moderator

BeitragSa, Jul 11, 2009 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher das X und Y auf dem Bild liegen? Ansonsten Code + Bild bitte.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

BeitragSa, Jul 11, 2009 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, X und Y liegen auf dem Bild (0,0). Da fängt das Bild doch an, oder?

Edit:

Code: [AUSKLAPPEN]
Graphics 400,300,32,2

Global bild = LoadImage("bild.png")

SetBuffer ImageBuffer(bild)
LockBuffer()
rgb = ReadPixelFast(0,0)
UnlockBuffer()

SetBuffer FrontBuffer()
   
R = (rgb And $FF0000)/$10000
G = (rgb And $FF00)/$100
B = rgb And $FF

Stop

WaitKey()
End

Bild - https://www.blitzforum.de/upload/file.php?id=6179

Xeres

Moderator

BeitragSa, Jul 11, 2009 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert bei mir einwandfrei. Liegt vielleicht an deiner Grafikkarte / Treiberversion / Betriebsystem / Erdstrahlen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

BeitragSa, Jul 11, 2009 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, an meinem Laptop funktioniert es, merke ich gerade. Danke.

Xeres hat Folgendes geschrieben:
Funktioniert bei mir einwandfrei. Liegt vielleicht an deiner Grafikkarte / Treiberversion / Betriebsystem / Erdstrahlen.


Was sind denn Erdstrahlen? Hast du dir das Wort gerade eben ausgedacht?
  • Zuletzt bearbeitet von Tennisball am Sa, Jul 11, 2009 22:25, insgesamt einmal bearbeitet

The_Nici

BeitragSa, Jul 11, 2009 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Marodierende Gummibärchenscharen mit Honigüberzug.

Versuch mal den Grafikkartentreiber zu aktualisieren.

MfG

mpmxyz

BeitragSo, Jul 12, 2009 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Du bist wohl im 16Bit-Farbmodus, oder?
Dort ist der höchste Wert pro Farbe 248.
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1
Local i=CreateImage(1,1)
WritePixel 0,0,$FF,ImageBuffer(i)
Print Str(ReadPixel(0,0,ImageBuffer(i))And $FF)
WaitKey
End


Es ist dann also nichts mit dem Grafikkartentreiber und Co.
Es war wohl ein bischen spät. Wink
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

The_Nici

BeitragSo, Jul 12, 2009 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ouch mpmxyz.
Guck seinen Code an, er ist im 32 bit farbmodus

mpmxyz

BeitragSo, Jul 12, 2009 0:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, das habe ich nicht gesehen, dann führt aber mal seinen Code bei 16Bit-Windows-Farbtiefe aus...
So landen wir beim selben Problem...
Egal, was man beim Fenstermodus angibt, man bekommt die Farbtiefe von Windows.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Tennisball

BeitragSo, Jul 12, 2009 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, danke sehr, mpmxyz, es klappt. Smile

hazumu-kun

BeitragSo, Jul 12, 2009 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Also sein Windows im 16-bit Modus ausführen ist nicht gut.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

Kaddy

BeitragMo, Jul 13, 2009 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
warum sollte das nicht gut sein?, das muss du mir mal erleutern
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine Wink

Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht SmileSmile

Valnar

BeitragMo, Jul 13, 2009 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Viele Programme Laufen im 32-Bit-Modus, die Probleme, die dies Bereitet, siehst du ja hier.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group