A mio avviso l'approccio migliore è l'utilizzo di due elelementi di CSS:

1) la media queries: in pratica è un meccanismo con il quale puoi caricare fogli di stile diversi a seconda di svariate proprietà del display su cui visualizzi, per esempio puoi stabilire cose come "se lo schermo ha risoluzione minore di x/y o ha una densità dpi inferiore a tot usa questo foglio di stile" e così via.

2) se ad una immagine dai width:100% o height:100% ed essa è contenuta in un elemento block che abbia la dimensione che ti serve, l'immagine verrà ridimensionata perchè abbia la larghezza (o l'altezza) del contenitore che la contiene.

Ciao!