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
Bild proportional skalieren
Re: Bild proportional skalieren
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:
Wie du siehst, bleibt das Seitenverhältnis erhalten nur das Bild wird so weit wie möglich vergrößert.
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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Bild proportional skalieren
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.
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.
Gruß, Frank
Re: Bild proportional skalieren
Danke euch beiden. Bin heute morgen auch noch darauf gekommen.. nach 12 Stunden arbeit knickt der Schlauch schon fast von allein ein. 