如何使用PHP将Flex应用程序快照保存到文件中,然后在浏览器中显示?

时间:2010-08-05 19:34:41

标签: php flex flash-builder

我正在尝试在我的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组件加载到应用程序中,这样我就知道图像在发送到服务器之前是好的。

1 个答案:

答案 0 :(得分:0)

改为使用PNGEncoder