【问题标题】:Saving an Image from a Flash application During Runtime?在运行时从 Flash 应用程序保存图像?
【发布时间】:2012-02-04 10:35:04
【问题描述】:

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

这是一个 Flash 应用程序,用户可以在其中设计一些东西,然后将其发送(给我)以进行发布(我认为最好的方法是使用某种 ActionScript 为他们完成的设计拍摄一张 JPEG 格式的照片,然后然后将其保存到我的 Web 服务器)。我四处搜索并找到了一些示例,但似乎没有一个有效。

我们将不胜感激!

亚伦

【问题讨论】:

  • 一般你会得到你包含的MovieClip的bitmapData,JPEG编码它,然后URLLoad它到你的服务器。同样重要的是有一个服务器页面来处理请求,你在你的服务器后端运行什么?
  • stackoverflow.com/questions/2509554/… - 不久前,我在那个问题switchonthecode.com/tutorials/… 中使用了这个示例,它的作用就像一个魅力
  • @ToddBFisher 我一直在使用 PHP 脚本将文件从应用程序传输到我的服务器,到目前为止效果很好。我似乎无法让 JPEG 编码类或任何东西在 Flash 中工作。
  • @Evert 感谢您的教程!它似乎比我需要的更强烈,有什么更简单的方法可以将位图信息发送到 PHP 文件传输脚本或类似的东西?
  • 源代码在它的底部 - 它的实现非常简单:包含库,创建一个编码器对象,将一个影片剪辑作为位图数据传递给它,并将编码的图像发布到一个php / .net 页面将其保存在您的服务器上。异步版本还公开了一些对错误处理有用的事件

标签: flash actionscript


【解决方案1】:

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

需要安装 as3corelib

https://github.com/mikechambers/as3corelib

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

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;
}

【讨论】:

  • 完美,谢谢!我将不得不将 PHP 保存到服务器,但这是一个很好的开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2014-01-22
  • 2011-08-19
  • 1970-01-01
相关资源
最近更新 更多