【问题标题】:Converting a MovieClip to ByteArray将 MovieClip 转换为 ByteArray
【发布时间】:2011-05-25 07:38:19
【问题描述】:

我必须将 MovieClip 转换为 ByteArray 并使用 POST 方法将其发送到 php。处理 php 的人说只需要发送 ByteArray 并且可以从 PHP 端转换为 JPG 和 PNG。当我在本地机器上构建保存选项时,使用了以下步骤。

  1. 转换为位图数据
  2. 在位图数据上使用 JPGEncoder 和 PNGEncoder
  3. 然后分配给字节数组变量。

因此,在这种情况下,不同的字节数组用于保存 JPG 和 PNG 的情况,并且有效。

我在 Stackoverflow 中找到了将movieclip 转换为字节数组的代码

AS3: Export a MovieClip or Canvas to swf

var buffer:ByteArray = new ByteArray();
buffer.writeObject(MOVIE_CLIP_HERE);
buffer.position = 0;
buffer.writeBytes(...);

缓冲区对象的writeBytes函数的参数应该是什么。假设影片剪辑的名称是 canvas_mc。

我已经弄清楚了 php 部分。提前致谢。

【问题讨论】:

  • writeObject(MovieClip) 将使用 AMF 序列化您的剪辑,如果服务器需要图像捕获,PHP 将更难处理。

标签: flash actionscript-3


【解决方案1】:

您不使用ByteArray.writeObject() 并解析MovieClip..

您需要使用bitmapData.getPixels(),它返回代表位图像素的ByteArray。

这是一个简单的例子:

const WIDTH:uint = 100;
const HEIGHT:uint = 100;

var rect:Rectangle = new Rectangle(0,0,WIDTH,HEIGHT);

// create BitmapData
var bmd:BitmapData = new BitmapData(WIDTH,HEIGHT,true,0);
bmd.draw(YOUR_MOVIE_CLIP);

// your byte array
var ba:ByteArray = bmd.getPixels(rect);
trace(ba.length);

您想要做的基本上是使用BitmapData.draw() 获取您的MovieClip 图形并将它们存储为ByteArray。

【讨论】:

  • +1 for getPixels(),但我觉得这个例子令人困惑,因为它在“绘制正方形”上花费了很多时间。不是不正确,只是与问题无关(为什么不填充矩形呢?)。
  • 没错,我会简化这个例子。实际上我不知道它以某种方式逃脱了我的脑海:s
猜你喜欢
  • 2010-10-28
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多