Я пытаюсь сохранить моментальный снимок компонента в моем приложении flex, который затем отправляется на php-скрипт для сохранения, а затем возвращается обратно в окно браузера. Кажется, я не могу заставить это работать.Как сохранить снимок приложения flex в файл с помощью PHP, а затем отобразить его в браузере?
Вот мой FlashBuilder код:
private function saveImage():void {
var parameters:String = "snapshot=" + takeSnapshot(this);
var variables:URLVariables = new URLVariables(parameters);
var submit:URLRequest = new URLRequest("SaveImage.php");
submit.data = variables;
submit.method = URLRequestMethod.POST;
navigateToURL(submit,"_self");
}
private function takeSnapshot(component:IBitmapDrawable):String {
return ImageSnapshot.encodeImageAsBase64(ImageSnapshot.captureImage(component));
}
Вот мой экспериментальный PHP код:
$binaryData = base64_decode($_POST["snapshot"]);
$file = "mydirectory/tmp.png";
file_put_contents($file, $binaryData);
header("Content-type: image/png");
die($binaryData);
Это генерирует следующий вывод (где {путь к изображению} является URL, где сохранен образ) :
Изображение "{путь к изображению}" не может быть отображено , поскольку оно содержит erro RS.
Он сохраняет файл .png в этом каталоге, но он пуст, там ничего нет, но его размеры правильные. Я подтвердил, что моментальный снимок работает, загружая его в приложение компонентом swfLoader сразу после моментального снимка, поэтому я знаю, что изображение хорошо до его отправки на сервер.
Выглядит хорошо. На несвязанной ноте, '' 'в начале требуется -' "? Snapshot =" ' – Amarghosh
нет, это не требуется. (На самом деле у меня даже нет этого в моем коде больше. Спасибо, что указали это.) Однако, если вы задаете параметры для такой строки, тогда вам нужно включить «&» между каждым новым параметром, т.е. "var1 = somedata & var2 = somedata" –
Я просто добавил тег php, на всякий случай, если это проблема php. – Amarghosh