ImageResize unter Einbehaltung des Seitenverhältnisses

Anfängerfragen zum Programmieren mit PureBasic.
Slut-Hunter
Beiträge: 40
Registriert: 05.06.2006 12:38

Beitrag von Slut-Hunter »

Hab gesucht nach Seitenverhältniss und Aspect Ratio, hab aber nichts bis auf Schnipsel die viel zu hoch für mich sind gefunden. :D
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Resizeimage()
(wenn man das nicht kennt, hilft ja F1)
oder
Bildgröße
wären mögliche Suchbegriffe gewesen
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

[offtopic]
@Kaeru:
Bist du mit dem verwandt? ;)
[/offtopic]
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Slut-Hunter
Beiträge: 40
Registriert: 05.06.2006 12:38

Beitrag von Slut-Hunter »

Resizeimage kannte ich ja schon, ging ja drum das ich nicht wusste wie man das so ausrechnet das das Seitenverhältniss einbehalten wird.(bin extrem schlecht in Mathe^^)

Wie auch immer, jetzt weiss ich ja wie es geht, danke nochmals an Kaeru Gamman und Kiffi.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das meine ich ja. so eine winzige information wie diesen dreisatz in einem wust von 85 threads die die suche ausspuckt zu finden, ist ein greul.

davon ab: dies ist der anfänger bereich, wir möchten doch vermeiden, fragesteller nur auf die boardsuche hinzuweisen.

@Franky
:lol:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Ich habe für eines meiner Programme eine entsprechende Procedure geschrieben:

Code: Alles auswählen

; Resize Image with Aspect Ratio
; Thorsten Hoeppner
; PureBasic V4
;
Procedure ResizeImgAR(ImgID.l,Width.l,height.l) 
  Define.l OriW, OriH, w, h, oriAR, newAR
  Define.f fw, fh
  OriW=ImageWidth(ImgID)
  OriH=ImageHeight(ImgID)
  If (OriH > OriW And height < Width) Or (OriH < OriW And height > Width)
    Swap Width, height
  EndIf
  ; Calc Factor
  fw = Width/OriW
  fh = height/OriH
  ; Calc AspectRatio
  oriAR = Round((OriW / OriH) * 10,0)
  newAR = Round((Width / height) * 10,0)
  ; AspectRatio correct?
  If oriAR = newAR 
    w = Width
    h = height
  ElseIf OriW * fh <= Width
    w = OriW * fh
    h = OriH * fh
  ElseIf OriH * fw <= height
    w = OriW * fw
    h = OriH * fw  
  EndIf
  ResizeImage(ImgID,w,h,#PB_Image_Smooth) 
EndProcedure

LoadImage(1, "C:\Testbild.jpg")
ResizeImgAR(1,400,300)
Vielleicht hilfts ja weiter.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Antworten