我需要一个用Flash制作的非常简单的(*)图像编辑器,这样我的网页用户就可以编辑图片,然后将它们保存到我的服务器上。我正在开始这个项目试图保存为jpg或png电影剪辑的内容,但我没有在Google上找到任何信息。你能提出如何开始的建议吗?如果你知道像这样的一些开源项目,请在这里分享。谢谢你的帮助!
(*)非常简单意味着,调整大小,裁剪,添加文本和重叠其他图像。
答案 0 :(得分:3)
Flash无法直接访问用户的计算机,因为它们位于不同的安全沙箱中。如果你正在使用Adobe Air,那么支持一些file-io的东西,但我不确定它是如何工作的。
允许人们保存图像的解决方法是将图像数据发送到服务器脚本(PHP,Perl,Python,等等......)并让脚本向用户显示图像。如果您使用标题application / octet-stream,大多数用户代理会询问用户是否要保存文件(还有其他解决方法)。
Pixlr就是这种互动的一个很好的例子。
答案 1 :(得分:3)
听起来你缺少的步骤是bitmapData.draw(myDisplayObject)。
例如,您正在播放正在播放的MovieClip,或者来自网络摄像头的视频流,或其他任何显示对象。
你可以说:
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格式。
我希望有所帮助!
答案 2 :(得分:1)
as3corelib具有JPG和PNG编码器,可用于将DisplayObject转换为图像数据(通过BitmapData)。
https://github.com/mikechambers/as3corelib
您可以找到一些示例或教程,了解如何将图像与将图像保存到服务器相结合。
答案 3 :(得分:0)
您可以通过FileReference.save(data:ByteArray/*generated by as3corelib image encoding class*/, name:String)