我正在尝试在我的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);
生成以下输出(其中{path to image}是保存图像的网址):
图像“{path to image}”不能 显示,因为它包含错误。
它确实将.png文件保存到该目录,但它是空白的,没有任何内容,但它的尺寸是正确的。我已经确认快照的工作方式是在拍摄快照后立即将应用程序中的swfLoader组件加载到应用程序中,这样我就知道图像在发送到服务器之前是好的。