Revealed: The actor who beat Harry Styles and Ansel Elgort to play Elvis Presley

Filmmaker Baz Luhrman has decided who will play Elvis Presley in his upcoming film about the music legend. 

Deadline reports Austin Butler, known from The Shannara Chronicles and The Carrie Diaries, has won the coveted role after an exhaustive casting process. 

One Direction's Harry Styles and Baby Driver star Ansel Elgort both reportedly screen-tested for the part, but didn't quite make the cut. 

Lurhman, whose films include Romeo + Juliet and Moulin Rouge, said Butler caught his attention with his recent Broadway performance in The Iceman Cometh. 

"I knew I couldn't make this film if the casting wasn't absolutely right, and we searched thoroughly for an actor with the ability to evoke the singular natural movement and vocal qualities of this peerless star, but also the inner vulnerability of the artist," Luhrmann said in a statement to Deadline. 

"Through a journey of extensive screen testing and music and performance workshops, I knew unequivocally that I had found someone who could embody the spirit of one of the world's most iconic musical figures."

Butler, who has been dating fellow actor Vanessa Hudgens since 2011, posted a screenshot of Deadline's article on Instagram, citing Elvis' lyrics: "You have made my life complete, and I love you so". 

Previously, Elvis has been portrayed by Jonathan Rhys Meyers in the mini-series Elvis, and briefly by Tyler Hilton in the Johnny Cash biopic Walk The Line.