werte mit readpixelfast aus imagebuffer auslesen
Übersicht

![]() |
sbrogBetreff: werte mit readpixelfast aus imagebuffer auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
in folgendem code will ich mit readpixelfast die Farbinformationen aus einem Imagebuffer auslesen, aber ich bekomme einen Laufzeitfehler. Mit readpixel klappt es. Code: [AUSKLAPPEN] SetBuffer ImageBuffer(bild1) LockBuffer ImageBuffer(bild1) For i = 0 To bildbreite For j = 0 To bildhoehe rgb = ReadPixelFast(i,j) rot1(i,j) =(rgb And $FF0000)/$10000 ;Rot einlesen gruen1(i,j) =(rgb And $FF00)/$100 ;Grün einlesen blau1(i,j) =rgb And $FF ;Blau einlesen Next Next UnlockBuffer ImageBuffer(bild1) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
0 to bildbreite -1
0 to bildhöhe -1 zweifel doch sehr daran dass ReadPixel funktionieren wird, wenn du über das Bild hinaus auszulesen versuchst ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
doch mit readpixel funktioniert es.
aber es funktioniert auch nich mit readpixelfast und mit dem -1 ich glaube das hat was mit imagebuffer zu tun |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ReadPixel funktioniert wohl deshalb, weil es eine Sicherheitsprüfung durchführt. Wenn Du -1 auf Höhe und Breite anwendest sollte es aber auch mit ReadPixelFast funktionieren? | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein ,, es funktioniert echt nicht. hier der ganze Code,damit ihr es selbt probieren könnt (ist auch im codearchiv)
http://sbrog.tim-koepsel.de/Verwandlung.rar |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kannst ja mal in den Debugmodus wechseln und nachsehen wo der Fehler genau entsteht.
Sofern Bild1 überhaupt existiert wird es mit 0 to Bildbreite -1 / 0 to bildhoehe -1 funktionieren. vorausgesetzt natürlich, dass du die richtige bildhöhe / bildbreite eingelesen hast. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
im debugmodus wird ja genau die zeile mit readpixelfast als fehler angezeigt | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann stimmt bild1 nicht bzw. bildhöhe / bildbreite
guck im debugmodus mal wie gross die variablen sind wenn der fehler auftritt ( wird ja angegeben im stack der aktuellen funktion ) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
die bildbreite beträgt 500, die bildhoehe 400, eben genau die größe des Bildes. Aber es funktioniert auch nicht, wenn ich schreibe for i = 0 to bildbreite - 100. Außerdem ermittle ich die größen mit imagewidth bzw. imageheight. Die größe kann also gar nicht falsch sein. | ||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
an welcher Position (resp. bei welchen i, j Werten) tritt denn der Fehler auf? Wenns schon von Anfang an, also bei Position 0,0 einen Fehler gibt, würd ich vorschlagen, du gibst den Parameter Buffer bei Readpixelfast auch noch an. Ansonsten ist anzunehmen, dass die Grösse des Bildes nicht stimmt ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
[quote="sbrog"]die bildbreite beträgt 500, die bildhoehe 400, eben genau die größe des Bildes. /quote]
damit meinte ich die stelle an der der fehler auftritt Die größe des bildes beträgt 500 * 400 . außerdem muss sie stimmen, weil ich sie mit imageheight und imagewidth bestimme. Und oben hab ich bereits den Download angebracht ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut dann sagen wir es nochmal:
0 to imagewidth -1 ein bild geht immer von 0 bis bildbreite -1 wenn du also bei einem 500er bild 500 als aktuelles i hast, dann bist du ausserhalb des bildes -> error |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe schonmal gesagt, dass es mit for i = 0 to bildbreite -1 auch nicht klappt. | ||
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir klappt dein programm, das du zum download gestellt hast.
Habe read/write pixel einfach mit read/write pixelfast ersetzt und trotzdem trat kein fehler auf |
||
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
??? ist ja sehr komisch, aber danke für deine Nachforschungen.
Ich hab gerade auch einmal rumexperimentiert, und festgesellt, dass der code funktioniert, wenn man die bilder erstellt, anstatt sie zu laden. |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] bild1 = LoadImage(...) breite = ImageWidth(bild1) hoehe = ImageHeight(bild1) Dim rot(breite-1,hoehe-1),gruen(breite-1,hoehe-1),blau(breite-1,hoehe-1) SetBuffer ImageBuffer(bild1) LockBuffer() For y=0 To hoehe -1 For x=0 To breite -1 rgb= ReadPixelFast(x,y) rot(x,y) = (rgb And $FF0000)/$10000 gruen(x,y)=(rgb And $FF00)/$100 blau(x,y)=rgb And $FF Next Next UnlockBuffer() Das muss funktionieren. MfG |
||
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
also bei mir sieht es momentan so aus :
Das funktioniert (obwohl die schleifen um 1 pixel aus dem buffer hinauslaufen) Code: [AUSKLAPPEN] Graphics 800,600 bild = createimage(50,50) breit = ImageWidth(bild) hoch = ImageHeight(bild) SetBuffer ImageBuffer(bild) LockBuffer ImageBuffer (bild) For i = 0 To breit For j = 0 To breit rgb = ReadPixelFast(i,j) Next Next UnlockBuffer BackBuffer() Das funktioniert nicht (das createimage wurde durch ein loadimage ersetzt) Code: [AUSKLAPPEN] Graphics 800,600 bild = LoadImage("bild.jpg") breit = ImageWidth(bild) hoch = ImageHeight(bild) SetBuffer ImageBuffer(bild) LockBuffer ImageBuffer (bild) For i = 0 To breit For j = 0 To breit rgb = ReadPixelFast(i,j) Next Next UnlockBuffer BackBuffer() und das funktioniert auch nicht (bei der schleife wird - 1 berücksichtigt) Code: [AUSKLAPPEN] Graphics 800,600 bild = LoadImage("bild.jpg") breit = ImageWidth(bild) hoch = ImageHeight(bild) SetBuffer ImageBuffer(bild) LockBuffer ImageBuffer (bild) For i = 0 To breit -1 For j = 0 To breit -1 rgb = ReadPixelFast(i,j) Next Next UnlockBuffer BackBuffer() |
||
- Zuletzt bearbeitet von sbrog am So, Sep 19, 2004 16:38, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
sbrog hat Folgendes geschrieben: und das funktioniert auch nicht (bei der schleife wird - 1 berücksichtigt) Code: [AUSKLAPPEN] Graphics 800,600 bild = LoadImage("bild.jpg") breit = ImageWidth(bild) hoch = ImageHeight(bild) SetBuffer ImageBuffer(bild) LockBuffer ImageBuffer (bild) For i = 0 To breit For j = 0 To breit rgb = ReadPixelFast(i,j) Next Next UnlockBuffer BackBuffer() Ach ja? Wo denn? ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
hot-bitGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hoi,
das gleiche wollte ich auch fragen ![]() Toni |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn man dir schon fertigen Code postet, sollte es doch möglich sein ihn mittels Copy Paste einzufügen, wenn du ihn schon nicht verstehen möchtest, oder. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am So, Sep 19, 2004 16:40, insgesamt einmal bearbeitet
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group