Ich möchte bitte eine Grafik 176x176 Pixel umwandeln in eine Bin-Datei für den Vic20.
Es klappt mit meiner Berechnung nicht.
Das Bild ist bei jeder Zeile verschoben , das rechte Bit im Byte fängt links an und umgekehrt.
Auch die letzten Zeilen sind verschoben und passen nicht in den Screen 176x176.
Der Screen vom Vic20 ist so aufgeteilt.
- das 1. Char ist links oben und 16 Byte hoch und 1 Byte breit. in einer reihe sind 22 solcher chars.
- es sind 11 char-reihen untereinander . in jeder neuen reihe fangen die chars wieder links an.
Ich habe 3872 Byte ausgerechnet : 22x16x11
Meine Bin-datei hat 3872 Byte.
Wer kann bitte einmal helfen.
Komme damit nicht zurecht : Procedure speicher_bild()
Hier kann man das Bild sehen:
http://sleepingelephant.com/ipw-web/bul ... f=2&t=9555
Danke.
Gruss
Code: Alles auswählen
Global ByteInhalt.a,Linie.l,ByteStueck.l,EinzelBit.l,yy.l,bild.l,geladen.l
Global text1.s,text2.s,farbe.l,xline.l,yline.l,x.l,y.l
Declare lade_bild()
Declare speicher_bild()
Enumeration
#Window_0
#Button_0
#Button_1
#String_0
EndEnumeration
InitSprite()
InitKeyboard()
OpenWindow(#Window_0,780,600,500,220,"vi20 hires", #PB_Window_SystemMenu)
ButtonGadget(#Button_0, 10,10, 80, 25, "Bild laden")
ButtonGadget(#Button_1, 10,35, 80, 25, "Bild erstellen")
StringGadget(#String_0, 10, 100, 100, 20, "")
CreateImage(0, 176,176)
StartDrawing(ImageOutput(0))
Box(0,0,176,176, RGB(255,255,255))
StopDrawing()
ImageGadget(0, 160, 10, 0, 0, ImageID(0))
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_0
Pattern$ = "Text (*.bin;*.bmp)"
Pattern = 0
text1 = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
text1=GetFilePart(text1)
SetGadgetText(#string_0, text1)
lade_bild()
EndIf
If EventGadget = #Button_1
speicher_bild()
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
Procedure speicher_bild()
If text1=""
Goto weiter
EndIf
text1=Left(text1,Len(text1)-4)
CreateFile(0, "d:\winvice\bilder\"+text1+".bin")
StartDrawing(ImageOutput(0))
For yline=0 To 175 Step 16
For xline=0 To 175 Step 8
ByteInhalt = 0
For y=yline To yline+15
For x=xline To xline+7
farbe=Point(x,y)
If (farbe <> 0)
ByteInhalt | (1 << (x%8))
EndIf
If (x % 8 = 7)
WriteByte(0, ByteInhalt)
ByteInhalt = 0
EndIf
Next
Next
Next
Next
StopDrawing()
CloseFile(0)
SetGadgetText(#string_0, "gespeichert")
weiter:
text1=""
EndProcedure
Procedure lade_bild()
LoadImage(1,"d:\winvice\bilder\"+text1)
StartDrawing(ImageOutput(0))
DrawImage(ImageID(1), 0,0)
StopDrawing()
ImageGadget(0, 160, 10, 0, 0, ImageID(0))
EndProcedure
Gruss