2010-12-28 11 views
0

Wie der Titel bereits sagt, habe ich ein (großes) Problem beim Importieren eines PNG in einer Flex 4-Anwendung.Nach dem Importieren eines PNG mit transparentem Hintergrund zeigt es sich mit weißem Hintergrund

Erstellt eine PNG-Datei in Photoshop mit transparentem Hintergrund. in Flex-Anwendung geladen mit diesem Code:

thumbnailRef.load(); 

thumbnailRef Tag basierend auf diese Weise definiert ist:

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

Also, wenn die gesamte Veranstaltung der Daten feuert geladen worden ist, und es ist möglich, die Daten zuweisen geladen, um die Bildkomponente namens Thumbnail:

Jetzt funktioniert alles wie erwartet! i erhalten Sie ein Foto mit einem weißen Hintergrund Aber wenn ich versuche, die Thumbnail-Komponente Daten an einen WCF-Dienst zu senden:

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

ich etwas falsch tue?

+0

Gibt es einen Grund, warum Sie die BitmapData- ImageSnapshot.captureBitmapData sind immer anstelle thumbnailRef.data zu verwenden? –

Antwort

0

Wenn Sie captureBitmapData verwenden, erfasst es die Komponente, aber nicht nur die Bitmap. Ich denke, Sie haben einen weißen Hintergrund für die Thumbnail-Komponente. Wenn Sie das Bild hochladen möchten, können Sie den Upload der Dateireferenz versuchen.

+0

Ich werde versuchen, einen transparenten Hintergrund (weiß nicht, ob das existiert) und sehen was passiert ... und ich werde wiederkommen! –

+0

Der transparente Hintergrund hilft möglicherweise nicht, da der Hintergrund der Komponente unterhalb der Miniaturansichtskomponente verwendet wird. Aber ich bin mir da nicht ganz sicher. Sie können es versuchen. – michael

0

@Jason: Um ehrlich zu sein, habe ich mit thumbnailRef.data herumspielen. Um die Kontrolle über das, was geschieht i umgewandelt, um die Flex-Anwendung auf einer AIR (Desktop) Anwendung und den beigefügten dies:

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(); 

Öffnen der test.png Datei auf dem Desktop zeigt nochmals einen weißen Hintergrund! Wie ich verstehe, was ich getan habe, ist: Nehmen Sie die geladenen Rohdaten (die sich in thumbnailRef.data befindet) und speichern Sie diese Daten erneut im Dateisystem.

Wenn dies richtig interpretiert wird, bedeutet dies, dass der "Fehler" durch das Laden der Daten erzeugt wird, aber ich habe keine Ahnung, wie ich das Laden abfangen oder selbst steuern kann (oder sollte ich die Daten selbst laden ...) wenn ja wie?).

Sonderbare Dinge ....

+0

Mein Gedächtnis ist nicht ganz gut. Wie ich mich erinnere, liegt es daran, dass der Alphakanal mit dem Blitz umgehen und so ähnlich. Vielleicht können andere dir mehr erzählen. – michael

Verwandte Themen