相信大家对Flex的Snapshot应用不会陌生,本实例是建立在这个功能的基础上的。为什么要用AS3加水印而不是用后台语言呢,主要是客户端处理效率高一点,而且我们还可以使用AS3丰富的图像API。那又为什么不直接加好了水印再快照呢?主要是因为主界面要求整洁,所以只好在输出字节流数据时才偷偷地加水印。
点击此处查看本实例的效果,点击此处下载本实例的源码。
在本实例中,我们先新建了一个Canvas容器,将容器的Image控件的Source指定为第一次快照获得的Bitmap,当按下Save Snapshot按钮时将一个Label控件添加到Canvas容器中,再快照Canvas容器,然后使用PNGEncoder图像编码器将BitmapData对象编码为PNG格式的ByteArray,最后将字节流数据传到后台生成PNG图片并下载保存到客户端。这个技巧不难,关键在于要客户端快照两次,记住Canvas只是一个临时放置字节流数据的容器。还有就是用了两次callLater,请好好体会。