Hallo, guten Tag.
Wie kann man bitte ein Bild Vertikal spiegeln mit einfachen aufruf der Daten und wieder reinschreiben der Daten in eine neue Datei?
Hat 49152 Byte (256x192)
Breite 256 Byte und eine Höhe von 192 Byte.
Möchte es mit Purebasic machen und nicht mit einem Aufruf von einem Grafikprogramm (Irfan oder so...)
Danke.
Ein Bild Vertikal spiegeln.
Re: Ein Bild Vertikal spiegeln.
Gib in der Forensuche 'Image spiegeln' ein und du wirst fündig werden.
Win11 x64 | PB 6.00 (x64)
Re: Ein Bild Vertikal spiegeln.
Das ist es nicht.
Die Farbwerte verändern sich.
Würde es gerne Byte für Byte wechseln mit Read und WriteByte.
Die Farbwerte verändern sich.
Würde es gerne Byte für Byte wechseln mit Read und WriteByte.
Re: Ein Bild Vertikal spiegeln.
Für ein Spiel habe ich folgenden Code verwendet, um Grafiken zu spiegeln: viewtopic.php?p=348908#p348908
Davon eine angepasste Version für Sprites, die sich in meiner GameFunctions.pbi-Datei (enthält viele wiederverwendbare Funktionen) befindet:
Mit diesem Code konnte ich keine Veränderung der Farbwerte feststellen.
Davon eine angepasste Version für Sprites, die sich in meiner GameFunctions.pbi-Datei (enthält viele wiederverwendbare Funktionen) befindet:
Code: Alles auswählen
Procedure MirrorSprite(SpriteID)
Protected zeilenlaenge
Protected hoehe
Protected breite
Protected tiefe
Protected *linkes.pixel
Protected *rechtes.pixel
Protected i, j, k, l
Protected halbe_breite
Protected farbpuffer
Protected *pixelpuffer
If StartDrawing(SpriteOutput(SpriteID))
*linkes.pixel = DrawingBuffer()
zeilenlaenge = DrawingBufferPitch()
StopDrawing()
EndIf
hoehe = SpriteHeight(SpriteID)
breite = SpriteWidth(SpriteID)
tiefe = SpriteDepth(SpriteID) / 8
halbe_breite = breite / 2
l = ((breite - 1) * tiefe)
For i = 1 To hoehe
k = zeilenlaenge
*rechtes = *linkes + (tiefe * (breite-1))
For j = 1 To halbe_breite
farbpuffer = *linkes\pix_l
*linkes\pix_l = *rechtes\pix_l
*rechtes\pix_l = farbpuffer
*linkes + tiefe
*rechtes - tiefe
k - tiefe
Next
*linkes + k
Next
ProcedureReturn -1
EndProcedure