Seite 1 von 1
horizontal spiegeln
Verfasst: 14.06.2015 21:06
von pws32
Hallo,
ich möchte gerne ein Bild horizontal spiegeln unter OSX und Windows
als Beispiel möchte ich einen Helm der von der linken Seite fotografiert ist, also nach links zeigt
anschließend nach rechts zeigt so als wenn er von rechts fotografiert ist
ich habe schon eine weile in allen Foren gesucht aber nichts gefunden
kann mir jemand auf die Sprünge helfen?
wenn es geht sollte es nicht Windows spezifisch sein weil ich gerade dabei bin ein Programm
unter Windows und OSX zu schreiben
Viele Grüße
Re: horizontal spiegeln
Verfasst: 14.06.2015 21:49
von NicTheQuick
Ich glaube das geht mit TransformSprite(), wenn du eine negative Breite oder Höhe nutzt. Ich kann es leider gerade nicht testen. Sitze ohne Laptop im Fernbus.
Re: horizontal spiegeln
Verfasst: 14.06.2015 22:51
von STARGÅTE
Ergänzung:
Eine Spiegelung eines Sprites geht leider nur unter OpenGL, unter DirectX9 bzw 11 ist immer das Back-Face-Culling aktiv.
Unter OpenGL kann man somit auch ZoomSprite(Sprite, -Width, Height) nutzen um zu spiegeln.
Re: horizontal spiegeln
Verfasst: 14.06.2015 23:37
von kutta
Nabend mit
Point und Plot und nem Array kannste es auch probieren, ist aber laaangsam..
Re: horizontal spiegeln
Verfasst: 15.06.2015 00:06
von pws32
Danke!! habe schon einen Tip aus dem englischen Forum:
What you are looking for is this really excellent code by Luis:
http://www.purebasic.fr/english/viewtop ... 12&t=38975
läuft klasse unter Windows und OSX Yosemite
Viele Grüsse
Re: horizontal spiegeln
Verfasst: 15.06.2015 19:31
von pws32
Hallo, im englischen Forum hat mir jemand einen Code gepostet der sehr gut funktioniert, ich poste den mal hier vielleicht kann das ja jemand mal gebrauchen und das schöne ist das er unter Windows, OSX und Linux läuft
Viele Grüße
Code: Alles auswählen
UseJPEGImageEncoder()
UsePNGImageDecoder()
UsePNGImageDecoder()
UsePNGImageEncoder()
Filename$ = OpenFileRequester("Choose an image", "", "PNG|*.png", 0)
If Len(Filename$)
OrgImg = LoadImage(#PB_Any, Filename$)
If OrgImg
Width = ImageWidth(OrgImg)
Height = ImageHeight(OrgImg)
NewImg = CreateImage(#PB_Any, Width, Height, 32, #PB_Image_Transparent) ; <---------------- Changed line
If NewImg
If StartDrawing(ImageOutput(NewImg))
For x = Width - 1 To 0 Step -1
StripeImg = GrabImage(OrgImg, #PB_Any, x, 0, 1, Height)
If StripeImg
DrawAlphaImage(ImageID(StripeImg), Width - x - 1, 0) ; <--------------------Changed line
FreeImage(StripeImg)
EndIf
Next x
StopDrawing()
SaveImage(NewImg, Filename$ + ".mirrored.png", #PB_ImagePlugin_PNG)
EndIf
FreeImage(NewImg)
EndIf
FreeImage(OrgImg)
EndIf
EndIf