Hallo
Ich habe folgende Aufgabe wo ich nichts dazu finde und nicht hin bekommen:
- Gegeben sind diverse Bilder in verschiedenen Grössen.
- Diese sollen verkleinert werden das sie sowohl eine maximale Höhe als auch eine maximale Breite nicht überschreiten.
- Kleiner dürfen sie werden
- Sie sollen aber so gross wie möglich sein
- und es soll proportional verkleinert werden.
Kennt dazu jemand eine Formel? Ich nehme an, es gibt eine die ohne ausprobieren in einer Schleife funktioniert.
Das eigentliche verkleinern der Bilder funktioniert schon. Nur mit dem Ausrechnen der Zielgrösse haperts...
Danke für jede Hilfe!
Ankündigung
Einklappen
Keine Ankündigung bisher.
Formel für Bildverkleinderung
Einklappen
Neue Werbung 2019
Einklappen
X
-
Formel für Bildverkleinderung
-
Zitat von Chriz Beitrag anzeigenIch erlaub mir mal wieder aufzumachen, weil ich gern auf die Frage antworte. Auch wenn sie sicherlich schon - wie nikosch gepostet hat - zu Hauf beantwortet wurde.
Zitat von Chriz Beitrag anzeigenWas meinst du jetzt?
Ich nehme mal an du möchtest Bilder einfach verkleinern, innen aber eine maximale "Bounding Box" zuweisen. Sprich so dass niemand deine Bilder auf 100.000 x 100.000 vergrößern kann.
Zitat von Chriz Beitrag anzeigen$soll_hoehe = min($max_size, $soll_hoehe); // sicherstellen, dass unsere Angabe dem $max_size entspricht
PHP-Code:// vorgabe:
$original_breite = 300;
$original_hoehe = 400;
$max_breite = 100;
$max_hoehe = 300;
// rechnung:
#$soll_hoehe = min($max_breite, $max_hoehe); // sicherstellen, dass unsere Angabe dem $max_size entspricht
$soll_hoehe = $max_hoehe;
$factor = $soll_hoehe / $original_hoehe; // 50/300 => 1/6 => 0,166...
$soll_breite = $factor * $original_breite; // 1/6 * 400 => 66,66...
$soll_breite = round($soll_breite); // 67
if ($soll_breite > $max_breite) {
$soll_breite = $max_breite;
$factor = $soll_breite / $original_breite; // 60/400 => 0,15
$soll_hoehe = $factor * $original_hoehe; // 0,15 * 300 => 45
}
$soll_hoehe = round($soll_hoehe);
print($soll_breite . "x" . $soll_hoehe."\n\n"); // 60x45
Vielen Dank für deine Hilfe!
-
Ich erlaub mir mal wieder aufzumachen, weil ich gern auf die Frage antworte. Auch wenn sie sicherlich schon - wie nikosch gepostet hat - zu Hauf beantwortet wurde.
Diese sollen verkleinert werden das sie sowohl eine maximale Höhe als auch eine maximale Breite nicht überschreiten.
Ich nehme mal an du möchtest Bilder einfach verkleinern, innen aber eine maximale "Bounding Box" zuweisen. Sprich so dass niemand deine Bilder auf 100.000 x 100.000 vergrößern kann.
Du musst eigentlich nur den Faktor der Verkleinerung errechnen und ihn entsprechend (wegen der Proportionen) dann auf beide Seiten (Höhe/Breite) anrechnen.
Beispiel:
Code:// vorgabe: $original_breite = 400; $original_hoehe = 300; $max_size = 60; $soll_hoehe = 50 // rechnung: $soll_hoehe = min($max_size, $soll_hoehe); // sicherstellen, dass unsere Angabe dem $max_size entspricht $factor = $soll_hoehe / $original_hoehe; // 50/300 => 1/6 => 0,166... $soll_breite = $factor * $original_breite; // 1/6 * 400 => 66,66... $soll_breite = round($soll_breite); // 67 if ($soll_breite > $max_size) { $soll_breite = $max_size; $factor = $soll_breite / $original_breite; // 60/400 => 0,15 $soll_hoehe = $factor * $original_hoehe; // 0,15 * 300 => 45 } print($soll_breite . "x" . $soll_hoehe); // 60x45
Einen Kommentar schreiben:
-
Das Thema wurde bereits hinreichend behandelt. Bitte benutze die Forensuche und beachte diesen Thread!
[MOD: Trash]
Einen Kommentar schreiben:
Einen Kommentar schreiben: