Aktuelle Zeit: 23.02.2019 14:26

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bildgröße anpassen (Aspect Ratio)
BeitragVerfasst: 02.02.2019 14:15 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Ich komme dieser Tage einfach zu nix ... :cry:
Zu nix Großem, um genau zu sein. So kleine Codeschnipsel bastel ich aber gelegentlich ganz gerne, einfach um in Form zu bleiben.
Die folgende Prozedur behält die korrekten Seitenverhältnisse, auch wenn der resize-Funktion nur ein Wert (x oder y) mitgeteilt wird.
Die entsprechende Funktion ist autonom und lässt sich leicht in eigene Projekte einpflegen.

Anleitung zum Testen:
- Einfach ein beliebiges Bild im .jpg -Format ins selbe Verzeichnis wie das Code-File ablegen und in "myPic.jpg" umbenennen
- der aspectResize(myPic,newX,newY)-Prozedur neue Parameter mitteilen. Wenn einer der beiden Werte 0 ist, wird die Größe fürs korrekte Seitenverhältnis automatisch berechnet.

Code:
EnableExplicit
UseJPEGImageDecoder()

Declare aspectResize(picID,newX,newY)
Declare showImage()

#xRes = 1024
#yRes = 768
Global screen
Global myPic = LoadImage(#PB_Any,"myPic.jpg")

If InitSprite()
   screen = OpenWindow(#PB_Any,0,0,#xRes,#yRes,"Base",#PB_Window_ScreenCentered)
   If OpenWindowedScreen(WindowID(screen),0,0,#xRes,#yRes)
      InitKeyboard()
   EndIf
EndIf


aspectResize(myPic,1024,768)
showImage()




Procedure showImage()
   Repeat
      ClearScreen(RGB(0,0,0))
      If StartDrawing(ScreenOutput())
         DrawImage(ImageID(myPic),0,0)
         StopDrawing()
      EndIf
      FlipBuffers()   
      
      ExamineKeyboard()
      
      WaitWindowEvent(1)
   Until KeyboardPushed(#PB_Key_Escape)
EndProcedure


Procedure aspectResize(picID,newX,newY)
   Protected x = ImageWidth(picID)
   Protected y = ImageHeight(picID)
   Protected factor.f
   
   If newX = 0 And newY = 0
      ProcedureReturn #False
   EndIf
   If newX And newY = 0
      factor = y/x
      newY = newX*factor
   EndIf
   If newX = 0 And newY
      factor = x/y
      newX = newY*factor
   EndIf
   
   ResizeImage(picID,newX,newY)
   ProcedureReturn #True ;Optionales Feedback, ob Bildgröße verändert wurde
EndProcedure

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bildgröße anpassen (Aspect Ratio)
BeitragVerfasst: 02.02.2019 16:19 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Nette Funktion,
ich hoffe das die Zeit bald wider gutmütiger ist :)
Das Problem kenne ich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Bildgröße anpassen (Aspect Ratio)
BeitragVerfasst: 04.02.2019 10:30 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
:allright:

_________________
BildBildBildBildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye