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