Я всегда делаю такие вещи через background, и свойство
background-size: cover
https://jsfiddle.net/RadCor/zbrdosjz/
Или можно использовать flex box и как написал
Сергей, заюзать object-fit, только одного его будет мало.
В общем вот рабочий вариант, думаю Вам он точно подойдёт, результат такой же как с
background-size: cover
но без использования backgaround
https://jsfiddle.net/RadCor/2a1duus2/1/