2012-03-11 11 views
2

私は、FileReference.upload();メソッドを使用してアップロードする前に、イメージファイルにウォーターマークを追加する方法を見つけようとしてきました。アップロードはすでに動作します。画像ファイルの右下に小さい透かし(アルファ透明度を持つPNG画像)を取得する方法を理解するだけです。別のものは、はありませんソースファイルを変更したいです。アップロード時にウォーターマークを追加したいだけです。アップロードする前に画像にウォーターマークを追加しますか? AS3 + Flex

このタイプの設定にはどのようなアプローチをお勧めしますか?私はまた、私がこの特定の事のために使うことができる既に作られた授業を見つけることができないようです。それは非常に一般的な仕事ではありませんか?そしていいえ私は私のサーバーではなくサービスのAPIに直接通信しているので、ウォーターマーキングを行うためにサーバー側(PHP)を使用することはできません。

+0

問題は、Flash Playerのメモリにイメージをロードしてから、以下のような操作をしてからサーバーに送信しなければならないことです。通常のファイルアップロードでは、ファイルをサーバーにストリームするため、一度に数バイトしかメモリにロードされません。これは小さなファイルではうまくいくかもしれませんが、画像が大きくなると問題が発生します。これはあなたが処理できるトレードオフですか? – RIAstar

+0

私はまだ自分の選択肢を検討しています。アプリの負荷が大きすぎると判明した場合は、私のアプローチを再考する必要があります。 – Propeller

答えて

2

グループやボックス内の画像をアップロードするよりも子インデックスが大きいウォーターマーク(アルファ画像)を設定でき、これらのコンテナをビットマップまたは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); 
0

基本的にわずかのBitmapDataに画像及び透かしを追加し、得られた画像のうち、PNGを作成するようhttp://www.kaourantin.net/2005/10/png-encoder-in-as3.htmlとしてPNGエンコーダを使用します。その後、サーバーにアップロードすることができ、元のイメージは変更されません。

関連する問題