В чем конкретно проблема?
Проще всего взять большую качественную картинку и сказать ей background-size: cover. Этот вариант простой и рабочий, но заставляет владельцев мобильников качать лишний трафик.
Чтобы этого избежать, делается несколько картинок разного размера и разруливаются при помощи media-выражений.
Дополнительно имеет смысл сделать ещё плейсхолдер в виде очень мелкой картинки, заинлайненной прямо в CSS как base64 - чтобы занимать место в те секунды, пока грузится основная картинка.