Cómo cambiaría el tamaño de una imagen en jQuery a una relación de aspecto consistente. Por ejemplo, establecer la altura máxima y cambiar el ancho de la anchura correctamente. Gracias.jQuery cambiar el tamaño a la relación de aspecto
Respuesta
Se podría calcular de forma manual,
es decir .:
function GetWidth(newHeight,orginalWidth,originalHeight)
{
if(currentHeight == 0)return newHeight;
var aspectRatio = currentWidth/currentHeight;
return newHeight * aspectRatio;
}
Asegúrese de que utiliza los valores originales de la imagen de lo contrario se degradan con el tiempo.
EDIT: ejemplo, la versión de jQuery (no probado)
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));
}
$("#some_image").resizable({ aspectRatio:true, maxHeight:300 });
aspectRatio: true -> mantener la relación de aspecto original
Sí, pero eso implica una gran cantidad de gastos indirectos si no está utilizando la interfaz de usuario. – Paul
De acuerdo, pero es código que no necesita escribir/mantener. –
Por supuesto, es muy posible que ya intente replicar la funcionalidad del complemento redimensionable ... llamar a tamaño redimensionable va a mucho más que simplemente cambiar el tamaño de la imagen, por cierto. – Paul
He aquí una función útil que podría hacer lo usted quiere:
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'});
});
};
Básicamente, toma un elemento, lo centra dentro del elemento principal y luego lo estira para que no quede visible el fondo de ninguno de los padres, mientras mantiene la relación de aspecto.
Por otra parte, esto podría no ser lo que desea hacer.
¡Gracias, fue una gran ayuda! – sowasred2012
Esto a veces provocará que newWidth o newHeight sean más grandes que las dimensiones primarias respectivas. En cambio, recomendaría algo como: http://stackoverflow.com/a/115492/175830 –
@JasonAxelson: Ese es el punto en mi respuesta. Este código garantiza que ambas dimensiones de la imagen sean ** mayores que ** o iguales a la dimensión del elemento principal. Esto tiene como objetivo cubrir, no llenar. – Eric
No existe una explicación de la cantidad de copias y empanadas que hay por ahí eh! También quería saber esto y todo lo que vi fueron ejemplos interminables de ancho de escala O altura ... ¿quién querría que el otro se desborde?
- ancho de cambiar el tamaño y altura sin la necesidad de un bucle
- no sea superior a las imágenes dimensiones originales
- Usos matemáticas que funciona correctamente es decir, la anchura/altura de aspecto, y la altura * aspecto de ancho para que las imágenes son en realidad las proporciones adecuadas de arriba a abajo:/
debe ser recta hacia adelante lo suficiente como para convertir a JavaScript u otros lenguajes
//////////////
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;
}
Si el alto y el ancho de la imagen son más pequeños que maxHeight, maxWidth no escalará la imagen. – tech20nn
- 1. Java tamaño de imagen, mantener la relación de aspecto
- 2. Cambiar el tamaño de la forma manteniendo la relación de aspecto
- 3. Redimensionar la imagen para ajustarla a la relación de aspecto
- 4. ImageMagick cambiar la relación de aspecto sin escalar la imagen
- 5. Cómo cambiar el tamaño de un UIImage mientras se mantiene su relación de aspecto
- 6. ¿Cómo cambio el tamaño de una imagen manteniendo la relación de aspecto en CSS?
- 7. HTML5/CSS3 - Cambiar el aspecto de los controladores de tamaño
- 8. Android Streaming Video - Necesita relación de aspecto
- 9. Redimensionar UIImage con relación de aspecto?
- 10. Cambiar el aspecto JSlider
- 11. UIImageView: ¿Cambiar el tamaño al tamaño de la imagen?
- 12. C#: Cómo calcular la relación de aspecto
- 13. Configuración de la relación de aspecto de la trama 3D
- 14. matplotlib - subtramas con relación de aspecto fija
- 15. webrtc - obtenga la relación de aspecto de la cámara web
- 16. ¿Cómo cambio el tamaño de una imagen usando PIL y mantengo su relación de aspecto?
- 17. Redimensionar la imagen JPEG a un ancho fijo, manteniendo la relación de aspecto tal como está
- 18. ancho de alternar cambiar el tamaño de la animación - jquery
- 19. vídeo a pantalla completa sin rotura Relación de aspecto
- 20. cambiar el tamaño del texto (tamaño de fuente) al cambiar el tamaño de la ventana?
- 21. Cambiar el aspecto de un enlace deshabilitado
- 22. Mantener la relación de aspecto con el ancho de la imagen en css
- 23. Cambiar el tamaño de la imagen en C# con la relación de aspecto y la imagen central de recorte para que no haya lagunas
- 24. Cambiar el color y el aspecto de la flecha desplegable
- 25. Estimación de la relación de aspecto de un casco convexo
- 26. jQuery UI Posición: Al cambiar el tamaño de la ventana
- 27. iTextSharp: ¿Cómo cambiar el tamaño de una imagen para que se ajuste a un tamaño fijo?
- 28. Cómo hacer zoom manteniendo la relación de aspecto correctamente
- 29. Android: Cómo mantener la relación de aspecto en animación
- 30. Cocos2d y la nueva relación de aspecto del iPhone 5
¿Hay una manera de establecer la anchura máxima y la altura de una imagen existente como - ImageResize ("imgID", anchoMax, maxHeight); He intentado con técnicas similares en PHP, pero mirando a través de los complementos de jquery no pude encontrar uno que hiciera el truco. – usertest
Explica a qué te refieres con el máximo. Hay atributos de css de ancho/altura máximo, ¿no es eso lo que estás buscando? – Paul
Gracias. El segundo ejemplo está cerca de lo que estaba buscando, pero el ejemplo no funciona. Por lo que puedo decir, uno de los problemas es que el cambio de ancho o alto debe establecerse mediante la función css(). Intenté eso pero el ejemplo todavía no funciona. ¿Eso es porque el aspectRatio no está configurado? – usertest