Как обычно, задал вопрос и потом сам нашел решение.
Ошибка была в том, что
data:image/png;base64, я подставлял в jQuery, а надо было сразу из контроллера возвращать ответ:
$base64 = 'data:image/png;base64,' . base64_encode($img); return $base64;
, а в jQuery в ответе вставлять просто:
$('#phone').html('<img src="' + data+'" />');