在运行时期间从Flash应用程序保存图像?

时间:2012-01-06 17:55:31

标签: flash actionscript

我很难找到任何可以在运行时保存图像的ActionScript。

这是一个Flash应用程序,用户可以在其中设计一些内容,然后将其发送给我(以便发布)(我认为最好的方法是使用某种ActionScript拍摄完成设计的JPEG图片然后将其保存到我的Web服务器)。我四处寻找并找到了一些例子,但它们似乎都没有用。

对此有任何启发将不胜感激!

亚伦

1 个答案:

答案 0 :(得分:0)

这是我在开展类似项目时发现的最简单的例子:

需要安装as3corelib

https://github.com/mikechambers/as3corelib

保存大型jpgs的问题是编码器的同步特性会在运行时冻结整个应用程序,因此它被前面评论中提到的异步库所取代

import com.adobe.images.JPGEncoder;

var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
jpgSource.draw(sketch_mc);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest("jpg_encoder_download.php?name=sketch.jpg");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
navigateToURL(jpgURLRequest, "_blank");

PHP STUFF - 将其写入屏幕,但它可以轻松保存文件。

if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
    // get bytearray
    $jpg = $GLOBALS["HTTP_RAW_POST_DATA"];

    // add headers for download dialog-box
    header('Content-Type: image/jpeg');
    header("Content-Disposition: attachment; filename=".$_GET['name']);
    echo $jpg;
}