Constant current source gets heated
If you have a linear circuit you have to get rid of about 3W somewhere. There is no particular advantage to your "constant current" circuit- it's not a very good one at all, it depends on diode voltage as the reference, and as the transistor heats the current goes up since the diodes won't track with the Vbe junction temperature. 

You can use a resistor, but it will dissipate about 3W and will have to be relatively bulky and will run very hot. You'll want to keep it away from other parts for reliability. Then you can switch the LED with a transistor or (better) a smallish MOSFET, even an SOT-23 type such as AO3404. The resistor will be a better constant current source than your transistor/diode thing. 

If cost is not too important, you could use a small DC-DC converter to drop the +12 to +5 and then your power dissipation in the resistor would drop to 0.6W, so a 2512 resistor would work. The regulator + resistor is FAR smaller than a 3W heatsink suitable for a semiconductor. Total dissipation of the driver circuit should be &lt; 1W. 

Even better, most likely, would be a bespoke switching LED driver circuit with an inductor that could get the dissipation down to a few hundred mW. You can pick one that has a control input and avoid the MOSFET as well, probably.