Как изменить размер изображения в jQuery на согласованное соотношение сторон. Например, установите максимальную высоту и правильно измените ширину. Благодарю.jQuery изменение размера до соотношения сторон
ответ
Вы можете вычислить это вручную,
т.е .:
function GetWidth(newHeight,orginalWidth,originalHeight)
{
if(currentHeight == 0)return newHeight;
var aspectRatio = currentWidth/currentHeight;
return newHeight * aspectRatio;
}
Убедитесь, что вы используете исходные значения для изображения в противном случае она будет ухудшаться со временем.
EDIT: пример JQuery версия (не тестировалось)
jQuery.fn.resizeHeightMaintainRatio = function(newHeight){
var aspectRatio = $(this).data('aspectRatio');
if (aspectRatio == undefined) {
aspectRatio = $(this).width()/$(this).height();
$(this).data('aspectRatio', aspectRatio);
}
$(this).height(newHeight);
$(this).width(parseInt(newHeight * aspectRatio));
}
Использование JQueryUI Resizeable
$("#some_image").resizable({ aspectRatio:true, maxHeight:300 });
AspectRatio: правда -> сохранить исходное соотношение сторон
Да, но это много накладных, чтобы вызывать, если вы еще не используете пользовательский интерфейс. – Paul
Согласен, но это код, который вам не нужно писать/поддерживать. –
Конечно, вполне возможно, что он уже пытается реплицировать функциональность изменяемого размера плагина ... вызов resizeable будет намного больше, чем просто изменить размер изображения, кстати. – Paul
Вот полезная функция, которая может делать то, что вы хотите:
jQuery.fn.fitToParent = function()
{
this.each(function()
{
var width = $(this).width();
var height = $(this).height();
var parentWidth = $(this).parent().width();
var parentHeight = $(this).parent().height();
if(width/parentWidth < height/parentHeight) {
newWidth = parentWidth;
newHeight = newWidth/width*height;
}
else {
newHeight = parentHeight;
newWidth = newHeight/height*width;
}
var margin_top = (parentHeight - newHeight)/2;
var margin_left = (parentWidth - newWidth)/2;
$(this).css({'margin-top' :margin_top + 'px',
'margin-left':margin_left + 'px',
'height' :newHeight + 'px',
'width' :newWidth + 'px'});
});
};
В принципе, он захватывает элемент, центрирует его внутри родителя, а затем растягивает его так, чтобы ни один фон родителя не был виден, сохраняя соотношение сторон.
Опять же, это может быть не то, что вы хотите сделать.
Спасибо, это была огромная помощь! – sowasred2012
Это может привести к тому, что newWidth или newHeight будут больше, чем соответствующие размеры родителя. Вместо этого я бы рекомендовал что-то вроде: http://stackoverflow.com/a/115492/175830 –
@JasonAxelson: В этом мой вопрос полностью. Этот код гарантирует, что оба размера изображения ** больше ** или равны размеру родителя. Это делается для покрытия, а не заполнения. – Eric
Там нет учета количества копий и пастеров там, а! Я также хотел знать это, и все, что я видел, было бесконечными примерами масштабирования ширины или высоты .. кто хотел бы, чтобы другой переполнял ?!
- ширина Изменение размера и высоты без необходимости цикла
- не превышает первоначальные размеры изображения
- Использует математику, которая работает должным образом, т.е. ширина/аспект по высоте, а высота * аспект для ширины так изображений фактически масштабируется должным образом вверх и вниз:/
Должно быть прямо вперед достаточно, чтобы преобразовать в Javascript или других языках
//////////////
private void ResizeImage(Image img, double maxWidth, double maxHeight)
{
double srcWidth = img.Width;
double srcHeight = img.Height;
double resizeWidth = srcWidth;
double resizeHeight = srcHeight;
double aspect = resizeWidth/resizeHeight;
if (resizeWidth > maxWidth)
{
resizeWidth = maxWidth;
resizeHeight = resizeWidth/aspect;
}
if (resizeHeight > maxHeight)
{
aspect = resizeWidth/resizeHeight;
resizeHeight = maxHeight;
resizeWidth = resizeHeight * aspect;
}
img.Width = resizeWidth;
img.Height = resizeHeight;
}
Если высота и ширина изображения меньше, чем maxHeight, maxWidth он не масштабирует изображение вверх. – tech20nn
- 1. Изменение размера изображения без соотношения сторон
- 2. Изменение размера изображения без сохранения соотношения сторон
- 3. Изменение размера изображений и сохранение соотношения сторон
- 4. Изменение размера изображения приложения Engine без сохранения соотношения сторон?
- 5. Изменение размера изображения без соотношения сторон в Node.js
- 6. Изменение размера изображений с сохранением соотношения сторон - петля
- 7. Изменение размера изображения без ущерба для соотношения сторон
- 8. Изменение размера изображения при сохранении соотношения сторон в Java
- 9. Сохранение соотношения сторон и центрирования независимо от соотношения сторон родителя
- 10. Изменение соотношения сторон пикселя tiff к квадрату
- 11. Изменение соотношения сторон сюжета в R
- 12. Изменение размера растрового изображения до фиксированного значения, но без изменения соотношения сторон
- 13. jQuery изменение размера с обеих сторон
- 14. Изменение размера изображения Соотношение сторон
- 15. Сохранение соотношения сторон изображения в разделении
- 16. Изменение размера изображения до определенного соотношения без его увеличения
- 17. Получение соотношения сторон изображения Ф.О.
- 18. обрезать изображение до соотношения сторон 4: 3 C#
- 19. изменение размера изображения с соотношением сторон
- 20. Сохранение соотношения сторон подклассифицированного QWidget во время изменения размера
- 21. Поиск соотношения сторон устройства android
- 22. масштабирование элемента холста и сохранение соотношения сторон
- 23. Изменение ширины/высоты пикселей без учета соотношения сторон
- 24. Размер фона 100% изменение соотношения сторон при необходимости?
- 25. Paraview: изменение соотношения сторон осей в окне рендеринга
- 26. Изменение размера изображений до фиксированного размера
- 27. изменение размера изображения с соответствующим соотношением сторон
- 28. Масштабирование изображения до фиксированной ширины, но не сохранение соотношения сторон
- 29. Может ли flexbox CSS изменить размер до соотношения сторон?
- 30. ImageMagick: как минимально обрезать изображение до определенного соотношения сторон?
Есть ли способ, чтобы установить максимальную ширину и высоту существующего образа, как - ImageResize ("imgID", MaxWidth, MaxHeight); Я пробовал подобные методы в PHP, но просматривая плагины jquery, я не мог найти тот, который мог бы сделать трюк. – usertest
Объясните, что вы подразумеваете под максимум. Есть атрибуты max width/height css, это не то, что вы ищете? – Paul
Спасибо. Второй пример близок к тому, что я искал, но пример не работает. Насколько я могу судить, одна из проблем заключается в том, что изменение ширины или высоты должно быть задано функцией css(). Я пробовал это, но пример все равно не работает. Это потому, что aspectRatio не установлен? – usertest