Seite 1 von 2
Bildgröße verändern
Verfasst: 30.04.2006 14:43
von winduff
Hellau
Ich habe ein ImageGadget(), 100x90 groß. Der anwender kann eine Image auswählen, die dann dort angezeigt werden soll - aber auf die größe verkleinert. ResizeImage() schön und gut, aber es soll das Verhältniss des Originalbildes beibehalten, do dass es nicht unschön wird
Dafür müsste man glaube ich die Bildgröße ermitteln, und dann mit irgendeiner Formel die endgröße berechnen.... oder so... Weis aber leider nicht wo ich da ansetzen sollte...
Nicht hauen, habe schon gesucht und nicht fündig geworden
Liebe Grüße
Chris
Verfasst: 30.04.2006 14:47
von freedimension
Wenn du das Bild lädst, kommst du über ImageWidth und ImageHeight an die Bildgröße in Pixeln ran. Damit kannst du dann ganz einfach das Seitenverhältnis ausrechnen und die Breite an die neue Höhe oder umgekehrt anpassen.
Verfasst: 30.04.2006 14:51
von winduff
das hab ich mir auch gedacht
Nur irgendwo ist mein Denkansatz falsch, ich krieg das nicht ausgerechnet...
Kannst du mir nen kleines Beispiel posten?
Verfasst: 30.04.2006 15:06
von zigapeda
Code: Alles auswählen
height = ImageHeight(#image)
width = ImageWidth(#image)
If height > width
width = 90 * (height / width)
height = 90
Else
height = 100 * (width / height)
width = 100
EndIf
sollte funktionieren, hab aber gerade keine zeit zum testen, ich hoffe das kannst du machen

Verfasst: 30.04.2006 15:07
von Macros
Das solltest du doch selber hinkriegen, aber ich will mal nicht so sein:
Nach Prozent:
Code: Alles auswählen
ResizeImage(#number,ImageWidth()*Prozent/100,ImageHeight()*Prozent/100)
Breite bekannt:
Code: Alles auswählen
ResizeImage(#number,width,ImageHeight()*width/ImageWidth())
Höhe bekannt:
Code: Alles auswählen
ResizeImage(#number,ImageWidth()*height/ImageHeight(),height)
Verfasst: 30.04.2006 15:38
von winduff
thank you very mucho
macro: wie gesagt, denkfehler... ich bins von der falschen seite angegangen
Verfasst: 31.07.2007 14:40
von N00B
Macros hat geschrieben:Das solltest du doch selber hinkriegen, aber ich will mal nicht so sein:
Nach Prozent:
Code: Alles auswählen
ResizeImage(#number,ImageWidth()*Prozent/100,ImageHeight()*Prozent/100)
Breite bekannt:
Code: Alles auswählen
ResizeImage(#number,width,ImageHeight()*width/ImageWidth())
Höhe bekannt:
Code: Alles auswählen
ResizeImage(#number,ImageWidth()*height/ImageHeight(),height)
Hier mal ne Version die auch für Noobs verständlich ist (gibt nichts nervigeres als Zig Befehle in einer Zeile) und sich an eine maximale Höhe und Breite hält z.B zum einpassen in ein Fenster ohne Scrollbargadget.
Code: Alles auswählen
LoadImage(500, "C:\blabla.jpg")
IMG_W = ImageWidth(500)
IMG_H = ImageHeight(500)
If IMG_W > IMG_H
Debug "Breiter als hoeher"
New_W = IMG_W / IMG_H * 940;MAXIMALE BREITE
New_H = IMG_H / IMG_W * 940;MAXIMALE BREITE
Repeat
New_W = New_W - 1
Until New_W <= 940;MAXIMALE BREITE
If New_H > 570;MAXIMALE HOEHE
Repeat
New_H = New_H -1
New_W = New_W -1
Until New_H <=570;MAXIMALE HOEHE
Else
EndIf
Else
Debug "Hoeher als breiter"
New_W = IMG_W / IMG_H * 570;MAXIMALE HOEHE
New_H = IMG_H /IMG_W * 570;MAXIMALE HOEHE
Repeat
New_H = New_H - 1
Until New_H <= 570;MAXIMALE HOEHE
If New_W > 940;MAXIMALE BREITE
Repeat
New_H = New_H -1
New_W = New_W -1
Until New_W <=940;MAXIMALE BREITE
Else
EndIf
EndIf
ResizeImage(500, New_W, New_H,#PB_Image_Smooth)
ImageGadget(501, 17, 90, New_W, New_H, ImageID(500),#PB_Image_Border)
Verfasst: 31.07.2007 14:58
von bobobo
cool .. so schnell schon 'ne antwort
Verfasst: 31.07.2007 17:28
von Fluid Byte
bobobo hat geschrieben:cool .. so schnell schon 'ne antwort
Hmmmmm...., war das Ironie?!

Verfasst: 31.07.2007 17:31
von bobobo
nö .. aber schnell
