Почему код выполняется раньше функции?
А GetImageData разве не получает данные асинхронно? В данном случае в data данные с сервера не записываются, и код выполняется дальше, не дожидаясь ответа сервера
Так или иначе, записаться в data полученные данные не могут, так как ответ с сервера приходит асинхронно, а это требует записи через callback.
Добавить в GetImageData коллбэк функцию, которая будет срабатывать только после удачной загрузки данных с сервера (и вставить ваш код в тело этой функции). Если используете $.ajax или $.get, почитайте документацию api.jquery.com/jquery.get - найдите там success функцию, она срабатывает как раз после удачного запроса, в нее и добавьте ваш код.