65.2 hp per heart. You could use a tiled background and set the size to (hp/65.2*[heartwidth]), and then round up to the heartwidth.
Edit: To round up to 16: width = int(Sprite.HP/65.2)*16
To change the amount to round to you can change the multiplier, e.g. for half hearts, use int(Sprite.HP/65.2*2)*8.