Bojan, 23, was part of Barcelona's youth system and scored 26 goals in 104 league appearances before leaving for AS Roma in 2011, having made his first team debut at 17.
He spent time at AC Milan on loan before rejoining the Catalan side last season.
He did not make an appearance for the La Liga giants and was sent on loan to Dutch champions Ajax Amsterdam, scoring five goals in 32 matches.
"Anyone who knows European football will be aware of him as a player and the fact that he sees his future at Stoke City is really exciting and an endorsement of the club itself," manager Mark Hughes told Stoke's website (www.stokecityfc.com).
"He's desperate to prove himself in the Premier League and we're pleased to be able to offer him that platform."
Bojan, who won a single Spain cap as a teenager in 2008, becomes Stoke's fifth off-season signing, joining Mame Biram Diouf, Steve Sidwell, Phil Bardsley and Dionatan Teixeira.
Stoke open their league campaign at home to Aston Villa on Aug. 16.
- Sports & Recreation