2010-12-28 11 views
0

タイトルでは、Flex 4アプリケーションでPNGをインポートする際に大きな問題があるとのことです。透明な背景を持つPNGをインポートした後は、白い背景で表示されます。

透明な背景を持つPhotoshopでPNGファイルを作成しました。 thumbnailRefがこのようにタグを定義し基づいて

thumbnailRef.load(); 

: は、このコードを使用してFlexアプリケーションにロードされ

<net:FileReference id="thumbnailRef" 
    select="onBrowseThumbnailRef_select(event);"       
complete="onBrowseThumbnailRef_complete(event);" /> 

完全なイベントは、データがロードされている発射し、データを割り当てることが可能であるので、サムネール:

private function onBrowseThumbnailRef_complete(evt:Event):void { 
        Thumbnail.source = thumbnailRef.data; 
       } 

Unitlsはすべて正常に動作します。 しかし、私は、WCFサービスにサムネイルコンポーネントのデータを送信しようとすると、私は白い背景で写真を受け取る:

var thumbBitmapData :BitmapData = 
    ImageSnapshot.captureBitmapData(Thumbnail.content); 
    //this is send to the WCF service    
    ThumbnailByteArray = new PNGEncoder().encode(thumbBitmapData); 

私が何か間違ったことをやっていますか?

+0

あなたがImageSnapshot.captureBitmapDataを使用してのBitmapDataを得る代わりにthumbnailRef.dataを使用している理由はありますか? –

答えて

0

captureBitmapDataを使用すると、ビットマップだけでなくコンポーネントがキャプチャされます。私はあなたがサムネイルコンポーネントのための白い背景を持っていると思う。画像をアップロードする場合は、ファイル参照アップロードを試してみてください。

+0

私は透明な背景を使用しようとします(これが存在するかどうかわかりません)、何が起こるかを見てください...そして私は戻ってきます! –

+0

透明な背景は、サムネイルコンポーネントの下のコンポーネントの背景を使用するため、役立たないことがあります。しかし、私はそれについてはあまりよく分かりません。試してみてください。 – michael

0

@Jason: 正直言って、私はthumbnailRef.dataで遊んだ。私はAIR(デスクトップ)アプリケーションにFlexアプリケーションを変換し、この追加何が起こっているかを制御ました:デスクトップ上のtest.pngファイルを開く

Thumbnail.source = thumbnailRef.data; 
//reset read pointer 
thumbnailRef.data.position = 0; 
var fl:File = File.desktopDirectory.resolvePath("test.png"); 
var fs:FileStream=new FileStream(); 
fs.open(fl,FileMode.WRITE); 
fs.writeBytes(thumbnailRef.data); 
fs.close(); 

が再び白色の背景を示しています!私が何をしているのか理解しているように、(thumbnailRef.dataにある)ロー・データを読み込み、このデータをファイルシステムに再度保存します。

これを正しく解釈すると、データをロードすることによって "エラー"が発生しますが、読み込みを傍受したり、自分で制御する方法がわかりません。もしあれば?)。

奇妙な....

+0

私の記憶はあまりよくありません。私が覚えているように、それはフラッシュのようなアルファチャンネルの処理なのです。他の人があなたにもっと教えてくれるかもしれない。 – michael

関連する問題