Frage von giklo, 27

Kennt jemand den Algorithmus für verhältnismässige bildskalierung?

Ich suche einen Algorithmus, um bilder im Verhältnis zu skalieren. Ich nehme ein Bild mit einer unbekannten grösse und möchte das Bild im Verhältnis (Breite zu Höhe) so lange verkleinern, bis die Breite unter 300px und die Höhe unter 200px ist.

Ich brauche den Algorithmus für mein Programm (PHP)

Antwort
von fluffiknuffi, 18

Warum nicht einfach Intervention Image nehmen? 

http://image.intervention.io/api/resize


// resize the image to a width of 300 and constrain aspect ratio (auto height)
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});

Ich weiß nicht ob du einfach 300 und 200 sofort angeben kannst, ansonsten prüft halt vorher ob das Bild zu breit/hoch ist und führe nur dann die jeweilige Größenänderung durch.

Kommentar von giklo ,

wie gesagt, ich brauch nur den Algorithmus, den Rest hab ich schon. Aber bei deiner Seite bin ich auf die Lösung gekommen: Ich machs in Prozent... Ich verringere solange um 1%, bis die Breite und Höhe stimmt

Mein Jetziger Code:

while($width > 300 || $height > 200){

$width*=0.99;
$height*=0.99;
}
Kommentar von mrhashpipeotto ,

doch nicht über eine while schleife? das ist simpler dreisatz...rechne  einfach die proportion von höhe und breite aus . dann ermittelst du welche höhe das bild bei 300px breite hat. falls der wert über 200px ist so rechnest du einfach aus welche breite das bild bei einer höhe von 200px hat und skalierst dann anschliessend auf diese dimension.

Kommentar von giklo ,

Genau sowas hab ich gesucht... Ich weiss nicht wieso ich nicht darauf gekommen bin. Ich dachte mir schon, dass es einfach ist... '^^

Mein Jetziger Code:

if($width > $height){

$multiplier=$width/300;
$width=300;
$height=$height/$multiplier;
}
else {
$multiplier=$height/200;
$height=200;
$width=$width/$multiplier;
}

Keine passende Antwort gefunden?

Fragen Sie die Community