2012-12-20 5 views
2

Pour mon projet récent que je veux utiliser des images vient le flickr api mais quand les images sont disponibles dans la plupart des images sont trop grand pour l'endroit que je l'ai sur. On m'a dit de faire une déclaration et si obtenir la longueur et la largeur de l'image d'origine en provenance de l'api et les diviser les multiplier ensuite par la largeur désirée. L'autre est l'opposé (au lieu de la hauteur de largeur). C'est ce que j'ai imaginé mais je n'arrive pas à le faire fonctionner. Quelqu'un peut-il me dire ce que je fais mal?Comment puis-je redimensionner automatiquement une photo de flickr api?

var dimensions = getDimensions(photos[p].width_m, photos[p].height_m); 
var m1window = addWindow(photos[p].title, photos[p].url_m, dimensions[0], dimensions[1]); 

function getDimensions(w, h) { 
    var array = [wi, he]; 
    var he; 
    var wi; 
    if (wi > he) { 
     wi = 100; 
     he = w/h*100; 
    } else { 
     wi = w/h*100; 
     he = 100; 
    }  
    return array;  
} 
+0

Je voudrais juste obtenir l'image qui est plus proche de votre résolution désirée et gérer le redimensionnement avec CSS. Essayez – elclanrs

+0

'he = (w/h) * 100,' et 'wi = (w/h) * 100;' puisque vous devez effectuer la première division. – arttronics

+0

Comment ferais-je cela? comment puis-je filtrer les résultats aux dimensions souhaitées. – IvanNewYork

Répondre

1

Je ne sais pas si je comprends bien votre problème, mais si votre problème est que vous devez redimensionner votre image dans un conteneur qui a une largeur et la hauteur maximum, je pense que ce que vous voulez est une fonction comme celui-ci (en utilisant JQuery):

function resizeImage($image, maxHeight, maxWidth){ 
    var ratio=1; 
    var ratiox=1; 
    var ratioy=1;  
    var imgWidth=$image.width();  
    var imgHeight=$image.height(); 

    if(imgWidth> maxWidth){ 
     ratiox=maxWidth/imgWidth; 
    } 
    if(imgHeight> maxHeight){ 
     ratioy=maxHeight/imgHeight; 
    } 
    ratio = (ratiox>ratioy)?ratioy:ratiox; 
    $image.width(imgWidth*ratio); 
    $image.height(imgHeight*ratio); 
} 

exemple jsFiddle: http://jsfiddle.net/8uJbY/2/

(Si c'est ce dont vous avez besoin, mais vous ne pouvez pas utiliser JQuery je peux réécrire cette fonction sans JQuery)

+0

** + 1 ** Excellente réponse, et ratio d'aspect aussi! ;-) – arttronics

+0

@arttronics fixe, merci! – Josep