farben im bild ändern

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

onkelz89

Betreff: farben im bild ändern

BeitragMo, Okt 31, 2005 3:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ist es möglich per befehl in blitz die farben in bildern zu ändern?

also beispiel

habe ein bild (schwarzer hintergrund) mit einem roten kreis (255,0,0) <-so ein rot

was ich suche ist ein befehl der in diesem bild alles was (255,0,0) ist auf zb. (0,0,255) ändert. geht das?

mfg
onkelz

skey-z

BeitragMo, Okt 31, 2005 7:22
Antworten mit Zitat
Benutzer-Profile anzeigen
da kann ich dir nur die befehle readpixel(fast) und writepixel(fast) ans Herz legen, schau mal in der Onlinehilfe
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

onkelz89

BeitragMo, Okt 31, 2005 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
1.
hab gerade eben mal angefangen:

Code: [AUSKLAPPEN]

For y=0 To GraphicsHeight()
For x=0 To GraphicsWidth()
pix(x,y)=ReadPixelFast(x,y,farbe$)
If farbe$="0,0,0,0" Then
RuntimeError("BLACK")
WaitKey()
Else
Print farbe$
var=var+1
EndIf
Next
Next


aber der sieht nie schwarz und macht einfach weiter und die variabel farbe$ ist immer leer (nicht gleich 0)

was mache ich falsch?


2.
achja nochwas... ist mir durch zufall aufgefallen und ist nur bei diesem programm:

Code: [AUSKLAPPEN]

Graphics 640,480,16,2

Print "Press a key to read color values"
WaitKey()

; Load and draw an image on to the screen - can be anything
pic=LoadImage("Gfx/Auto/1.bmp")
DrawImage pic,0,0

; Initialise an array big enough to fit all the color information of the screen
Dim pix(GraphicsWidth(),GraphicsHeight())

; Lock buffer before using ReadPixelFast
LockBuffer

; Use ReadPixel to get all the color information of the screen
For y=0 To GraphicsHeight()
For x=0 To GraphicsWidth()
pix(x,y)=ReadPixelFast(x,y,farbe$)
If farbe$="0,0,0,0" Then
RuntimeError("BLACK")
WaitKey()
Else
Print farbe$
var=var+1
EndIf
Next
Next

; Lock buffer after using ReadPixelFast
UnlockBuffer

 
Locate 0,0
Print "Press a key to write pixels"+var
Print "Once this has finished, you can then press a key to end the program"

WaitKey()

; Lock buffer before using WritePixelFast
LockBuffer

; Use WritePixel to redraw the screen using the color information we got earlier
For y=0 To GraphicsHeight()
For x=0 To GraphicsWidth()
WritePixelFast x,y,pix(x,GraphicsHeight()-y) ; get y array value in backwards order, to flip screen
Next
Next

; Unlock buffer after using WritePixelFast
UnlockBuffer

WaitKey()


wenn ich das mehrmals starte dann klappt es irgendwann nicht mehr bis ich pc herunterfahre und wieder hoch... außerdem klappen alle anderen blitz-prgramme danach auch nicht mehr (aber nur wenn ich das do oben mehrmals starte) wieso?

mfg
onkelz

d-bug

BeitragMo, Okt 31, 2005 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
LockBuffer ImageBuffer(pic) ;image sperren
For y=0 To ImageHeight(pic) ;du willst doch nur dein image auslesen, oder?
For x=0 To ImageWidth(pic)
pix(x,y)=ReadPixelFast(x,y,ImageBuffer(pic)) ; ReadpixelFast gibt einen Integer zurück (das farbe$ war unnötig und fehl am Platz)
If pix(x,y)=$000000 Then ; der = dem Hexwert $000000 ist :)
RuntimeError(\"BLACK\")
WaitKey()
Else
r= (pix(x,y) And $FF0000)/$10000 ; rot aus dem integer ausfiltern
g= (pix(x,y) And $FF00)/$100 ; grün aus dem integer ausfiltern
b= pix(x,y) And $FF ; blau aus dem integer ausfiltern
Print r+\",\"+g+\",\"+b ; Farbwerte ausgeben
;var=var+1 ;<-- was ist denn das da ?
EndIf
Next
Next
UnlockBuffer ImageBuffer(pic)


ich glaube aber, das Print und RuntimeError bei einem gesperrten Buffer evtl. zu Schwierigkeiten führen könnte.


zu deinem zweiten Problem, setz mal nach dem letzten Waitkey noch die Zeile :
BlitzBasic: [AUSKLAPPEN]
FreeImage pic

Du lädst das Bild bei jedem Start von BB in den Speicher. Da bleibt es dann auch, bis dein Speicher irgendwann voll ist.


Du solltest ein paar Tutorials lesen und die Onlinehilfe benutzen...

[edit]
was macht der denn da smilies in den code-tags ???
[/edit]
 

onkelz89

BeitragMo, Okt 31, 2005 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
danke das hilft mir weiter... auch zu problem 2

ehm das var=var+1 war nur ein zähler wollte wissen ob der alle überprüft.... naja und mit dem farben umändern schau ich mir jetzt noch an (hoffe ich bekomme es hin) falls nicht bis gleich Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group