Код ниже очень хорошо подходит для изменения размера изображения по соотношению сторон по высоте, и я также могу создать отдельную функцию по ширине. Но я не всегда уверен, нужно ли уменьшать изображение по высоте или ширине.
Например, если пространство, в которое необходимо изменить размер изображения, составляет 100 по ширине и 100 по высоте, а изображение имеет размер 150 на 90, то его ширина должна быть уменьшена. Если изображение 80 на 160, то высота должна быть уменьшена.
Итак, я спрашиваю, как можно изменить приведенный ниже код, чтобы он уменьшал изображение по соотношению сторон, чтобы соответствовать параметрам ширины и высоты? Спасибо.
jQuery.fn.resizeHeightMaintainRatio = function(newHeight){
if (this.aspectRatio == undefined)
this.aspectRatio = parseInt($(this).width() / $(this).height());
$(this).height(newHeight);
$(this).width(newHeight * this.aspectRatio);
}
Я отредактировал код еще раз, так как при дальнейшей проверке ни моя обновленная версия, ни версия Дэна, похоже, не работали должным образом. Соотношение сторон было потеряно, так что вот еще один. Я попробовал это на одном изображении и пока все хорошо. Вот оно,
jQuery.fn.resizeMaintainRatio = function(newHeight, newWidth){
widthRatio = parseInt($(this).width() / newWidth);
heightRatio = parseInt($(this).height() / newHeight);
if(heightRatio > widthRatio)
{
this.aspectRatio = parseInt($(this).css("width") / $(this).css("height"));
$(this).css("height", newHeight);
$(this).css("width", newHeight * this.aspectRatio);
}
else{
this.aspectRatio = parseInt($(this).css("height") / $(this).css("width"));
$(this).css("width", newWidth);
$(this).css("height", newWidth * this.aspectRatio);
}
}
ПРИМЕЧАНИЕ СНОВА: после дальнейшего использования приведенный выше код работает очень странно, попробуйте вместо этого -
http://plugins.jquery.com/project/kepresize