Algorithmus, um die Größe Bild und das Seitenverhältnis beizubehalten, passen iPhone
Ich bin erstellen einer web-service für ein iPhone app zu interagieren.
Wenn mein client uploads images server-Seite, ich möchte mein php-Skript zum ändern der Bildgröße, unter Beibehaltung des Seitenverhältnisses, so dass es passt auf dem iPhone-Bildschirm. (also die längste Seite ist <= 960 und die kürzeste <= 640
Habe ich ein mock-up in JS, einfach, weil ich finde es einfacher zu tun schnell.
Ich bin mir ziemlich sicher, obwohl ich falsch sein kann, dass dies nicht der effizienteste Weg, es zu tun. Könnte jemand korrigieren Sie mich, mit entweder bessere Logik (besonders das Stück am start), oder eine mathematische Möglichkeit, dies zu erreichen?
var w = 960, h = 960, new_w, new_h;
if (w >= h && w > 960 || h >= w && h > 960 || w >= h && h > 640 || h >= w && w > 640) {
if (w > h) {
if (w>960) {
new_w = 960;
new_h = h*(new_w/w);
}
if (h>640) {
new_h = 640;
new_w = w*(new_h/h);
}
}
else {
if (h>960) {
new_h = 960;
new_w = w*(new_h/h);
}
if (w>640) {
new_w = 640;
new_h = h*(new_w/w);
}
}
}
InformationsquelleAutor Alex Coplan | 2011-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das folgende sollte Ihnen die Idee. Es ist keine bestimmte Sprache, sondern einer C-ähnlichen pseudo-code.
Die Effizienz dieser code, oder was Sie haben, kein Problem sein. Die Zeit, die es braucht, um tatsächlich die Größe des Bildes wird Zwerg die Zeit, die es braucht, um ein paar Vergleiche, die beiden trennt, und mit zwei multipliziert.
Ist dies ein "mehr mathematische" Weg, es zu tun? Ich nehme an, dass es zusammenbricht Ihre vier Fällen, in zwei. Aber der Ansatz ist im wesentlichen die gleiche.
Ich hatte ziemlich genau die gleichen Algorithmus, aber es war schön zu sehen, wie jemand, der die Lösung für dieses problem-und Dank für den Hinweis, dass tatsächlich durchführen Größenänderung Aktion auf dem Bild wird der Algorithmus ist Effizienz ein strittiger Punkt.
dieser algo nicht für mich arbeiten, wenn die Höhe des Bildes ist 800 und Breite ist 600, während shortsidemax ist 275(vertikal) und longsidemax 480(horizontal).
Sie sollten eine Frage stellen, dann zeigt das, was Sie versucht haben und die Ergebnisse, die Sie bekommen. Werden Sie sicher, dass ein link zu dieser Antwort und erklären, dass es nicht funktioniert.
InformationsquelleAutor Jim Mischel
Vielleicht eine etwas kürzere routine wäre:
Natürlich, wenn das Verhältnis > 1 ist, dann ist es vergrößern, wenn < 1 ist, dann ist es zu schrumpfen.
float ratio = ratioW > ratioH ? ratioW : ratioH;
InformationsquelleAutor DevProd
Unten, ist der einfachste Weg, ich weiß zu halten Proportionen. Hoffe, es hilft.
Javascript
PHP
InformationsquelleAutor Koeta
Jeder kommt auf diese Seite von Google suchen ASPEKT FÜLLEN nicht ASPEKT PASSEN, es ist einfach eine Sache der Umstellung, die ratio selection code, den ich.e:
Jim ' s Antwort:
wird
DevProd Antwort:
wird
InformationsquelleAutor dloomb
Ähnlich DevProd Antwort, aber ich kämpfte, um zu Folgen, es mich, weil der Namenskonvention. Dies ist hoffentlich ein wenig klarer:
InformationsquelleAutor 1owk3y