Bild 320x192 Pixel als Byte zusammenfassen, wie geht das ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Bild 320x192 Pixel als Byte zusammenfassen, wie geht das ?

Beitrag von funkheld »

Hallo, ich hab ein Problem 8 Pixel zu einem Byte zusammenzufassen.
Das Bild hat 320x192 Pixel.
8 Pixel in der Reihe möchte ich als ein Byte abspeichern, 40 Byte in einer Reihe und das 192x.

Ich finde da keine Lösung.

danke.

Code: Alles auswählen

Global x.l,y.l,farbe.l

InitSprite() 
InitKeyboard() 

OpenWindow(0,0,0,400,400,"draw",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)


CreateImage(0, 320,192)
StartDrawing(ImageOutput(0))
  Box(0,0,320,192, RGB(255,255,255)) 
  DrawingMode(#PB_2DDrawing_Outlined )
  Circle(160,90,70,RGB(0,0,0)) 
StopDrawing()
   
ImageGadget(0, 20, 20, 0, 0, ImageID(0))
  
Repeat
  EventID = WaitWindowEvent() 
  StartDrawing(ImageOutput(0))
  For y=0 To 191
    For x=0 To 319
      farbe=Point(x,y)
      If farbe = 0
        Debug x
        Debug y
        Break 3
      EndIf 
    Next
  Next  
  StopDrawing()
  
Until EventID = #PB_Event_CloseWindow  
  
End   
  
gruss
Zuletzt geändert von funkheld am 31.08.2011 11:28, insgesamt 1-mal geändert.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Bild 320x192 Pixel als Byte zusammenfassen, wie geht das

Beitrag von Thorium »

Mit anderen Worten: Du möchtest ein RGB Bild zu einem Monochrombild konvertieren?
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Re: Bild 320x192 Pixel als Byte zusammenfassen, wie geht das

Beitrag von funkheld »

Jup, habe es oben noch mal abgeändert.
Es funktioniert soweit, das ich mit Point abfrage wann der erste scharze Punkt kommt.

Nun möchte ich dieses Bild immer nach 8x Point zu einem Byte zusammenfassen bis zu 320x Point, dann in die zweite Linie gehen und wieder von vorn beginnen bis zum Ende der Linie 192.

Diese Byte möchte ich dann abspeichern in einem Binärfile.

gruss
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Bild 320x192 Pixel als Byte zusammenfassen, wie geht das

Beitrag von CSHW89 »

Habs jetzt nicht getestet, aber so ungefär:

Code: Alles auswählen

byte = 0
For y=0 To 191
  For x=0 To 319
    farbe=Point(x,y)
    If (farbe <> 0)
      byte | (1 << (x%8))
      ; Erklärung: x%8 kann ja Werte von 0 bis 7 annehmen
      ; das ist dann die Position des Bits, das gesetzt wird
      ; (1 << (x%8)) heißt also dann z.b. (x=0: 00000001, x=6: 01000000)
    EndIf
    If (x % 8 = 7)
      ; 8 Bytes voll
      ; Speichere byte
      [...]
      ; und dann setzte Byte zurück
      byte = 0
    EndIf
  Next
Next
lg Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Re: Bild 320x192 Pixel als Byte zusammenfassen, wie geht das

Beitrag von funkheld »

Jup, danke.
Es reicht für den Ansatz.

gruss
Antworten