2012-10-16 15 views
70

Sto utilizzando un tag img di HTML per mostrare una foto nella nostra applicazione. Ho impostato sia l'altezza sia l'attributo width a 64. Devo mostrare qualsiasi risoluzione dell'immagine (ad esempio 256x256, 1024x768, 500x400, 205x246, ecc.) Come 64x64. Ma impostando gli attributi height e width di un tag img su 64, non viene mantenuto il rapporto aspetto, quindi l'immagine appare distorta.Come mantenere le proporzioni utilizzando il tag HTML IMG

Per il vostro riferimento il mio codice esatto è:

<img src="Runtime Path to photo" border="1" height="64" width="64"> 
+0

possibile duplicato [HTML/IE: immagine tratto per misura, preservare il rapporto di aspetto] (http: // stac koverflow.com/questions/643500/html-ie-stretch-image-to-fit-preserve-aspect-ratio) –

+0

Chridam, è da tempo che ho fatto questa domanda. Ho lasciato l'azienda in cui stavo lavorando per questo problema. Non ho potuto provare le soluzioni suggerite perché stavo lavorando su altre priorità per rispettare le scadenze in quel momento. Non ho potuto avere la possibilità di fare ulteriori progressi su di esso. –

risposta

1

Avvolgere l'immagine in un div con dimensioni 64x64 e impostare width: inherit all'immagine:

<div style="width: 64px; height: 64px;"> 
    <img src="Runtime path" style="width: inherit" /> 
</div> 
85

non impostare altezza e larghezza. Utilizzare l'uno o l'altro e verrà mantenuto il corretto rapporto d'aspetto.

.widthSet { 
 
    max-width: 100px; 
 
} 
 

 
.heightSet { 
 
    max-height: 100px; 
 
}
<img src="http://placehold.it/200x250" /> 
 

 
<img src="http://placehold.it/200x250" width="64" /> 
 

 
<img src="http://placehold.it/200x250" height="64" /> 
 

 
<img src="http://placehold.it/200x250" class="widthSet" /> 
 

 
<img src="http://placehold.it/200x250" class="heightSet" />

+0

Le immagini sul violino sono rotte. – theblang

+4

... ma cosa succede se si desidera correggere sia l'altezza che la larghezza? – fatuhoku

-1

Perché non si utilizza un file CSS separato per mantenere l'altezza e la larghezza dell'immagine che si desidera visualizzare? In questo modo, è possibile fornire necessariamente la larghezza e l'altezza.

esempio:

 image { 
     width: 64px; 
     height: 64px; 
     } 
29
<img src="Runtime Path to photo" style="border: 1px solid #000; max-width:64px; max-height:64px;"> 
+2

Questa è la soluzione corretta in quanto continua ad essere indipendente dall'orientamento dell'immagine.La soluzione di 3rror404 richiede che tu sappia se l'immagine è più larga di quanto sia alta o viceversa. – devios1

+2

imposta anche 'width' e' height' su 'auto'. – Mahmoodvcs

+0

Soluzione giusta per vincolare altezza e larghezza. –

25

Impostare width e height delle immagini da auto, ma limitare sia max-width e max-height:

img { 
    max-width:64px; 
    max-height:64px; 
    width:auto; 
    height:auto; 
} 

Fiddle

Se si desidera visualizzare immagini di dimensioni arbitrarie nei "frame" 64x64px, è possibile utilizzare wrapper di blocchi in linea e posizionamento per essi, come in this fiddle.

+4

Sei il secondo esempio di Fiddle ha funzionato alla grande per me. Grazie! – Daniel

9

Nessuno dei metodi elencati consente di ridimensionare l'immagine alla dimensione più grande possibile che si adatta a una casella pur mantenendo le proporzioni desiderate.

Questo non può essere fatto con il tag IMG (almeno non senza un po 'di JavaScript), ma si può fare come segue:

<div style="background:center no-repeat url(...);background-size:contain;width:...;height:..."></div> 
+2

Sì. Usa 'style =" background: url ('_'); background-size: larghezza copertina: _px height: _px "' per il tag ''. –

+1

Grazie, @UjjwalSingh. Infatti, abbiamo bisogno di 'cover' not' contain' per massimizzare la dimensione dell'immagine al massimo possibile. 'contain' porta a" letterboxing ". –

25

qui è il campione di uno

div{ 
 
    width: 200px; 
 
    height:200px; 
 
    border:solid 
 
} 
 

 
img{ 
 
    width: 100%; 
 
    height: 100%; 
 
    object-fit: contain; 
 
    }
<div> 
 
    <img src="https://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png"> 
 
</div>

+0

non funziona per firefox – Sllouyssgort

+0

funziona in firefox ora –

+3

Solo una nota per chi vuole usare questa soluzione: object-fit non è molto ben supportato dai browser. Non è affatto supportato da IE o Edge. Fonte: http://caniuse.com/#feat=object-fit –

Problemi correlati