The 26-year-old Slovenian international, whose transfer is reportedly going to cost £2 million, is Birmingham's first signing in the January window and also the first player to join under newly-arrived manager Gianfranco Zola.
Krhin has 30 international caps and had joined Granada from fellow Spanish club Cordoba. He had previously played in the Serie A for Bologna and Inter.