The man, in his 40s, was fishing in a tinnie with friends off the coast of Waddy Point on the northern side of the island when the whales swam past causing waves that capsized the tinnie.
The group was forced to swim to safety but about 50-metres from shore the man was thrown onto rocks by a wave, fracturing his leg in two places.
He became stuck on the rocks and emergency services had to swim out to retrieve him.
The Bundaberg-based RACQ CareFlight Rescue helicopter landed on the island to treat the man for his injuries and fly him to Bundaberg Base Hospital for further treatment.
He travelled in a stable condition.