Come ridimensionare un'immagine in jQuery con proporzioni coerenti. Ad esempio, imposta l'altezza massima e ridimensiona la larghezza correttamente. Grazie.jQuery ridimensionamento proporzioni
risposta
Si potrebbe calcolare questo manualmente,
cioè .:
function GetWidth(newHeight,orginalWidth,originalHeight)
{
if(currentHeight == 0)return newHeight;
var aspectRatio = currentWidth/currentHeight;
return newHeight * aspectRatio;
}
assicurarsi di utilizzare i valori originali per l'immagine altrimenti si degrada nel tempo.
EDIT: ad esempio la versione jQuery (non testato)
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 -> mantenere proporzioni originali
Sì, ma è un sacco di overhead da invocare se non stai già utilizzando l'interfaccia utente. – Paul
Concordato, ma è il codice che non è necessario scrivere/mantenere. –
Naturalmente potrebbe benissimo essere (s) sta già cercando di replicare la funzionalità del plug-in ridimensionabile ... chiamare ridimensionabile è molto più che ridimensionare l'immagine, btw. – Paul
Ecco una funzione utile che potrebbe fare quello vuoi:
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'});
});
};
Fondamentalmente, afferra un elemento, lo centra all'interno del genitore, quindi lo allunga per adattarlo in modo tale che nessuno dello sfondo del genitore sia visibile, pur mantenendo le proporzioni.
Quindi, di nuovo, questo potrebbe non essere quello che vuoi fare.
Grazie, questo è stato un grande aiuto! – sowasred2012
Ciò a volte farà sì che il nuovoWidth o newHeight sia più grande delle rispettive dimensioni padre. Invece suggerirei qualcosa come: http://stackoverflow.com/a/115492/175830 –
@JasonAxelson: Questo è interamente il punto della mia risposta. Questo codice garantisce che entrambe le dimensioni dell'immagine siano ** maggiori di ** o uguali alla dimensione del genitore. Questo mira a coprire, non riempire. – Eric
Non c'è contabilità per la quantità di copia e di pastori là fuori eh! Volevo anche sapere questo e tutti quelli che ho visto erano infiniti esempi di larghezza di scala O altezza ... chi vorrebbe che l'altro traboccasse ?!
- larghezza ridimensionare e altezza senza la necessità di un ciclo
- non superi le immagini dimensioni originarie
- Utilizzi la matematica che funziona correttamente cioè larghezza/aspetto in altezza, e l'altezza * aspetto di larghezza in modo immagini sono in realtà in scala correttamente su e giù:/
deve essere dritta abbastanza avanti per convertire in JavaScript o altre lingue
//////////////
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;
}
Se altezza e larghezza dell'immagine sono entrambe inferiori a maxHeight, maxWidth non ridimensiona l'immagine. – tech20nn
- 1. JavaFX - SplitPane, ridimensionamento e proporzioni
- 2. Ridimensionamento di ImageView per adattarsi alle proporzioni
- 3. Ridimensionamento larghezza tela HTML5 preservando le proporzioni w/h
- 4. ridimensionamento di un'immagine, ma mantenere le sue proporzioni
- 5. Mantenere le proporzioni di un QWidget sottoclassato durante il ridimensionamento
- 6. Ridimensionamento e ritaglio dell'immagine con GD mantenendo le proporzioni
- 7. Ridimensionamento immagine jquery
- 8. jQuery ridimensionamento elementi ruotati
- 9. jQuery altezza dell'immagine cambiamento mantenere proporzioni
- 10. jQuery UI ridimensionabile finestra di ridimensionamento evento di ridimensionamento
- 11. Come gestire le diverse proporzioni in libGDX?
- 12. jQuery tablesorter + ridimensionamento delle larghezze delle colonne
- 13. jQuery - ridimensionamento dell'immagine per adattarsi div
- 14. altezza jQuery() non cambia sul ridimensionamento
- 15. JQuery: altezza dinamica() con finestra di ridimensionamento()
- 16. Ridimensionamento di SurfaceView fisso per il riempimento verticale e mantenimento delle proporzioni
- 17. Ridimensionamento di un System.Drawing.Bitmap in base a una determinata dimensione mantenendo le proporzioni
- 18. Come non conservare le proporzioni quando ridimensionamento di un'immagine in d3.js
- 19. Proporzioni in UIImageView
- 20. intervento proporzioni immagine
- 21. Ridimensionamento di una bitmap
- 22. Mantieni proporzioni con larghezza immagine in css
- 23. Larghezza in percentuale non funzionante dopo il ridimensionamento jQuery è padre
- 24. Ridimensionamento FlexSlider 2 al ridimensionamento della finestra
- 25. Android: calcolo PSS (proporzioni proporzionali)
- 26. Unità viewport, mantenendo le proporzioni?
- 27. CollapsingToolbarLayout con immagine, proporzioni fisse
- 28. matplotlib - sottotrame con proporzioni fisse
- 29. Ottieni proporzioni video da FFmpeg
- 30. Mantenere le proporzioni di un div in base all'altezza
C'è un modo per impostare la massima larghezza e l'altezza di un'immagine esistente come - ImageResize ("imgID", maxwidth, maxHeight); Ho provato tecniche simili in PHP, ma guardando attraverso i plugin jquery non riuscivo a trovarne uno che potesse fare il trucco. – usertest
Spiega cosa intendi per massimo. Ci sono gli attributi max css larghezza/altezza, non è quello che stai cercando? – Paul
Grazie. Il secondo esempio è vicino a quello che stavo cercando, ma l'esempio non funziona. Per quanto posso dire uno dei problemi è che la modifica della larghezza o dell'altezza dovrebbe essere impostata dalla funzione css(). Ci ho provato ma l'esempio continua a non funzionare. È perché l'aspectRatio non è impostato? – usertest