Seite 1 von 2

Bildgröße verändern

Verfasst: 30.04.2006 14:43
von winduff
Hellau :allright:

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 :allright:

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?! Bild

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