2012-03-11 28 views
2

在過去的幾個小時裏,我一直在試圖找出一種在使用FileReference.upload();方法上傳圖片文件之前添加水印的方法。上傳工作已經完成。我只需要弄清楚如何在圖像文件的右下角獲得一個小水印(帶有alpha透明度的PNG圖像)。另一件事是,我不要想修改源文件。我只是想在上傳時添加水印。上傳之前在圖片中添加水印? AS3 + Flex

對於這種設置,您會推薦什麼方法?我似乎也無法找到任何預製課程,我可以使用這個特定的課程。這不是一個非常普遍的任務嗎?和沒有我不能使用服務器端(PHP)做水印,因爲我直接與服務的API通信,而不是通過我的服務器。

+0

問題是您必須將圖像加載到Flash播放器的內存中,然後在下面的答案中執行一些操作,然後將其發送到服務器。正常的文件上傳將文件傳輸到服務器,以便一次只能將幾個字節加載到內存中。這可能適用於小文件,但更大的圖像會導致麻煩。這是一個你可以處理的折衷嗎? – RIAstar 2012-03-11 09:01:24

+0

我仍在考慮我的選擇。如果它證明對應用程序負載太大,我可能不得不重新考慮我的方法。 – Propeller 2012-03-11 09:11:53

回答

2

你可以設置水印(alpha圖像)作爲較高的子索引比ur上傳圖像在一個組或框中,您可以將這些容器保存爲位圖或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);