1) не передовать текстовые данные (т.е. переменные) и бинарные в одном пакете, они херят друг-друга. Т.е.
req.data = myByteArrayInstance;
а не req.data = myObjectInstance;
не совсем правда, можно в ByteArray запихнуть и переменные и картинку, но распаковать это придется ручками(тогда смотреть в сторону amf).
2) читать бинарные данные не из $_POST, а из $GLOBALS["HTTP_RAW_POST_DATA"];
ну, вот
хороший пример.