Seite 1 von 1
Bild proportional skalieren
Verfasst: 17.03.2012 03:56
von Lambda
Ich steh gerade auf dem Schlauch. Ich möchte ein Bild proportional skalieren damit es in ein Gadget mit einer bestimmten größe immer voll sichtbar reinpasst.
Gadget ist zb 200x400
Bild ist zb 3000x6000
Re: Bild proportional skalieren
Verfasst: 17.03.2012 05:14
von STARGÅTE
Breite/Höhe gibt dir das Seitenverhältnis.
Dan einfach die Höhe auf die Passende größe bringen und mal das Seitenverhältnis für die Breite rechnen.
Hier mal n Macro, was ResizeImage ersetzt und den Parameter #PB_Image_KeepAspectRatio hinzufügt:
Code: Alles auswählen
#PB_Image_KeepAspectRatio = %10
Procedure ResizeImageEx(Image.i, Width.i, Height.i, Mode.i=#PB_Image_Smooth)
Protected AspectRatio.f
If Mode & #PB_Image_KeepAspectRatio
AspectRatio = ImageWidth(Image)/ImageHeight(Image)
If Width/Height < AspectRatio
ResizeImage(Image, Width, Width/AspectRatio, Mode&~#PB_Image_KeepAspectRatio)
Else
ResizeImage(Image, Height*AspectRatio, Height, Mode&~#PB_Image_KeepAspectRatio)
EndIf
Else
ResizeImage(Image, Width, Height, Mode)
EndIf
EndProcedure
Macro ResizeImage(Image, Width, Height, Mode=#PB_Image_Smooth)
ResizeImageEx(Image, Width, Height, Mode)
EndMacro
;- Bespiel
Enumeration
#Image
EndEnumeration
CreateImage(#Image, 200, 400)
ResizeImage(#Image, 600, 600, #PB_Image_KeepAspectRatio)
Debug ImageWidth(#Image)
Debug ImageHeight(#Image)
CreateImage(#Image, 400, 50)
ResizeImage(#Image, 600, 600, #PB_Image_KeepAspectRatio)
Debug ImageWidth(#Image)
Debug ImageHeight(#Image)
Wie du siehst, bleibt das Seitenverhältnis erhalten nur das Bild wird so weit wie möglich vergrößert.
Re: Bild proportional skalieren
Verfasst: 17.03.2012 14:36
von Frabbing
Simple Dreisatz-Rechnung:
http://de.wikipedia.org/wiki/Dreisatz
Hast du z.B. eine Bildgröße 800 x 600 Pixel und die neue Breite soll 500 sein, dann würde die neue Höhe so berechnet:
h = 500 x 600 / 800
Also
h = 375
Die neue Bildgröße wäre also 500 x 375 Pixel, wobei das Verhältnis zur originalen Größe gleich bliebe.
Re: Bild proportional skalieren
Verfasst: 17.03.2012 16:38
von Lambda
Danke euch beiden. Bin heute morgen auch noch darauf gekommen.. nach 12 Stunden arbeit knickt der Schlauch schon fast von allein ein.
