Algorithme pour redimensionner l'image et maintenir les proportions pour s'adapter à l'iPhone
Je suis de la création d'un service web pour une application iPhone pour interagir avec.
Quand mon client télécharge les images côté serveur, je veux que mon script php pour redimensionner l'image, tout en maintenant le ratio d'aspectde sorte qu'il s'adapte sur l'écran de l'iPhone. (c'est à dire le côté le plus long est <= 960 et la plus courte <= 640
J'ai créé une maquette en JS, tout simplement parce que je trouve ça plus facile de le faire rapidement.
Je suis sûr que, si je l'ai peut-être tort, que ce n'est pas le moyen le plus efficace de le faire. Quelqu'un pourrait-il me corriger avec le meilleur de la logique (surtout le peu au début), ou d'une manière mathématique de cette approche?
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);
}
}
}
source d'informationauteur Alex Coplan
Vous devez vous connecter pour publier un commentaire.
Je pense que la suite devrait vous donner l'idée. Ce n'est pas une langue, mais plutôt un C-comme le pseudo-code.
L'efficacité de ce code, ou ce que vous avez, ne sera pas un problème. Le temps qu'il faut pour redimensionner l'image nain le temps qu'il faut pour faire un couple de comparaisons, les deux se divise, et les deux se multiplie.
Est-ce un "plus mathématique" façon de le faire? Je suppose que, en ce qu'elle s'effondre votre cas sur quatre en deux. Mais l'approche est essentiellement la même.
Peut-être un peu plus courte routine serait:
Évidemment, si le ratio est > 1, alors il est d'élargir, si < 1 alors elle régresse.
Ci-dessous, la façon la plus simple que je connais pour garder les proportions. Espérons que cela aide.
Javascript
PHP
Un venir à cette page de Google à la recherche de ASPECT REMPLIR pas ASPECT AJUSTEMENTc'est simplement une question de commutation le ratio de sélection de code que j'ai.e:
De Jim réponse:
devient
DevProd réponse:
devient
Similaire à DevProd réponse, mais j'ai du mal à suivre moi-même en raison de la convention d'affectation de noms. J'espère que c'est un peu plus clair: