Şöyle çözebilrsiniz, preg split ile img taglarından ayırdım, ilk eleman boş geldiği için splice ettim, 2 li gruplara ayırıp 0 a 'img' 1 e 'html' dedim.
$data = preg_split('/(<img .*>)/i', $source, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
array_splice($data, 0, 1);
$mainData = array_chunk($data, 2);
foreach ($mainData as &$arr) {
$arr['img']=$arr[0];
unset($arr[0]);
$arr['html']=$arr[1];
unset($arr[1]);
}
print_r($mainData);