在上传之前为图像添加水印? AS3 + Flex

时间:2012-03-11 08:28:39

标签: actionscript-3 flex image-processing upload watermark

在过去的几个小时里,我一直试图想出一种方法,在使用FileReference.upload();方法上传图像文件之前为图像文件添加水印。上传工作已经开始。我只需要弄清楚如何在图像文件的右下方获得一个小水印(带有alpha透明度的PNG图像)。另一件事是,我想要修改源文件。我只想在上传时添加水印。

您建议采用何种方法进行此类设置?我似乎也找不到任何预先制作的课程,我可以用它来做这件事。这不是一个非常常见的任务吗?并且没有我不能使用服务器端(PHP)来进行水印,因为我直接与服务的API通信,而不是通过我的服务器。

2 个答案:

答案 0 :(得分:2)

您可以将水印(alpha图像)设置为比在组或框中上传图像更高的子索引,并且可以将这些容器保存为位图或jpeg图像。

   <s:BorderContainer width="100%" height="100%" backgroundColor="0x3322ff" id="comp">
        <s:Image source="{upload-image-source}" width="100%" height="100%"/> 
        <s:Image source="{water-mark-image-source(alpha png file)}" width="100%" height="100%"/> 
    </s:BorderContainer>

您可以将此容器另存为图像。

        var bmpd:BitmapData = new BitmapData(comp.width,comp.height);
        bmpd.draw(comp);

        var jpgenc:JPEGEncoder = new JPEGEncoder(80);
        var imgByteArray:ByteArray = jpgenc.encode(bmpd);

答案 1 :(得分:0)

基本上只需将图像和水印添加到BitmapData,然后使用PNG编码器(例如http://www.kaourantin.net/2005/10/png-encoder-in-as3.html)从结果图像中创建PNG。然后,您可以上传到您的服务器,原始图像仍然不会改变。