2010-11-11 34 views
1

我需要一个非常简单的(*)在Flash中制作的图像编辑器,以便我的网页用户可以编辑图片,然后将它们保存到我的服务器。我开始尝试将这个项目保存为jpg或png格式的电影剪辑内容,但我在Google上找不到任何信息。你能给出如何开始的建议吗?如果你知道一些像这样的开源项目,请在这里分享。谢谢你的帮助!将MovieClip中的图片保存在FLASH中可能吗? (flash中的简单图像编辑器)

(*)非常简单的手段,调整大小,裁剪,添加文本和重叠其他图像。

回答

3

Flash不能直接访问用户的计算机,因为它们位于不同的安全沙箱中。如果您使用的是Adobe Air,则支持某些file-io内容,但我不确定这是如何工作的。

让人们保存图像的解决方法是将图像数据发送到服务器脚本(PHP,Perl,Python,无论...)并让脚本向用户呈现图像。如果使用header application/octet-stream,大多数用户代理会询问用户是否想保存文件(还有其他解决方法)。

Pixlr是这种交互的一个很好的例子。

+1

Pixlr实际上是本地文件io,Flash Player 10支持该功能(您可以通过从网络断开连接并打开并保存文件来测试它)。 – 2010-11-11 23:12:48

1

as3corelib具有JPG和PNG编码器,您可以使用它们将DisplayObject转换为图像数据(通过BitmapData)。

https://github.com/mikechambers/as3corelib

你或许可以找到如何与图像保存到你的服务器结合一些例子或教程。

0

您可以通过FileReference.save(data:ByteArray/*generated by as3corelib image encoding class*/, name:String)

3

这听起来像你缺少步骤调用系统文件保存对话框的BitmapData.draw(myDisplayObject的)。

因此,例如,您有正在播放的影片剪辑,或来自网络摄像头的视频流,或任何显示对象。

你可以说:

var bmd:BitmapData = new BitmapData(320, 240); 
bmd.draw(MyMovieClip); // bmd now contains the image you're trying to save. 

// then you use something like PNGEncoder.encode. As mentioned above, that comes from Mike Chambers - https://github.com/mikechambers/as3corelib 
var byteArray:ByteArray = PNGEncoder.encode(bmd); // now you have a binary stream holding your image 

从那里,保存机制是由你。例如,您可以将该ByteArray传递给.php脚本,该脚本将其保存到服务器并返回该URL。您可以使用FileReference.save - 其他答案中概述的任何选项。

关键是确保您有一个ByteArray是从一个包含图像的BitmapData对象构建的,并被编码为.png或.jpg格式。

我希望有帮助!

相关问题