Калькулятор изменения размера изображения

Эй, ребята, Я пытаюсь написать функцию JavaScript, которая будет расширять изображение, чтобы заполнить div всегда (так, чтобы обрезать верх или стороны по мере необходимости). Это эквивалент JavaScript для фона фона CSS3: обложка.

Я не могу для жизни понять это. Это то, что у меня есть до сих пор:

function full_bleed(box_width, box_height, new_width, new_height) 
 {
 var aspect_ratio=new_width/new_height;
 if(new_height
<p>Я подумал, что у одного из вас, возможно, есть уравнение, лежащее вокруг.</p> <p>Спасибо!</p>
2 ответа

Благодаря комментарию от Бена, я понял это.

full_bleed: function(boxWidth, boxHeight, imgWidth, imgHeight) 
{
 // Calculate new height and width
 var initW = imgWidth;
 var initH = imgHeight;
 var ratio = initH / initW;
 imgWidth = boxWidth;
 imgHeight = boxWidth * ratio;
 if(imgHeight < boxHeight){
 imgHeight = boxHeight;
 imgWidth = imgHeight / ratio;
 }
 // Return new size
 return {
 width: imgWidth,
 height: imgHeight
 };
}


Я сделал некоторые изменения в решении Drew, чтобы лучше соответствовать моим потребностям.

function calculateCover(frame, sides) {
 var ratio = sides[1] / sides[0],
 cover = { 
 width: frame.width,
 height: Math.ceil(frame.width * ratio) 
 };
 if (cover.height <= frame.height) {
 cover.height = frame.height;
 cover.width = Math.ceil(frame.height / ratio);
 }
 return cover;
}
calculateCover({width: 1280, height: 822}, [16,9]);

Идея такая же, но здесь нужно вычислить увеличенный размер без первоначального размера носителя, вместо этого используя заданное соотношение сторон. Я использую его для видеороликов, а не для изображений, где я загружаю видео через API YouTube, например, и у меня нет начального размера, но я знаю это соотношение, и я хочу растянуть видео по доступному пространству. (Конечно, его можно изменить, чтобы рассчитать соотношение фактических размеров видео или изображения.) Также были сделаны некоторые упрощения кода.

licensed under cc by-sa 3.0 with attribution.