Bild als ByteArray in Flex
Ich würde gerne in der Lage sein, um Bilder zu bewegen in und aus der Flex durch die Umwandlung hin und her zwischen ByteArrays. Ich habe einige Probleme mit diesem, also entwarf ich ein einfaches test-Programm, und auch, dass ich nicht auf der Arbeit. Hier der code, ich versuche jetzt:
protected function button3_clickHandler(event:MouseEvent):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler2);
loader.load(new URLRequest("file:///c:/win.jpg"));
}
private function loaderCompleteHandler2(event:Event):void
{
var loader:Loader = (event.target as LoaderInfo).loader;
var bmp:Bitmap = Bitmap(loader.content);
image1.source = bmp;
myBmpData = bmp.bitmapData;
myByteArray = bmp.bitmapData.getPixels(myBmpData.rect);
}
protected function button4_clickHandler(event:MouseEvent):void
{
var loader:Loader = new Loader();
loader.loadBytes(myByteArray);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler);
}
private function loaderCompleteHandler(event:Event):void
{
var loader:Loader = (event.target as LoaderInfo).loader;
var bmp:Bitmap = Bitmap(loader.content);
image1.source = bmp;
}
Bisher der Prozess folgt von oben nach unten: Klicken Sie auf die Schaltfläche 3, - Bild zeigt, es geht alles gut. Klicken Sie auf die Taste 4, und ich bekomme "Error #2044: Unbehandelte IOErrorEvent:. text=Error #2124: Geladene Datei ist ein unbekannter Typ." nach der Zeile " - loader.loadBytes(myByeArray);" in der Funktion button4_clickHandler. Soweit ich sagen kann, ich bin mit alles wie vorgesehen. Würde mich wirklich freuen, Anregungen zu bekommen, mich in die richtige Richtung bewegen. Danke!
InformationsquelleAutor Donny | 2010-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schauen Sie sich die folgenden code:
Den b64Img Objekt, dass ich die Quelle Eigenschaft ist ein Base64Image, die ein Teil der großen FlexLib Projekt. Also im Endeffekt, was Sie tun, ist die folgende:
Cheers
die Lösung funktioniert gut, jedoch stoße ich auf ein weiteres problem: 1.Holen Sie sich die byteArray von einem existieren Bild 2.deal mit der byteArray(komprimieren oder ändern Sie die byteArray) und zurück, dann will ich ein neues Bild, das die Verwendung der neuen byteArray, b64Img.source = Base64.encode(newBuyeArray), das problem ist, das Bild nicht zeigen kann
InformationsquelleAutor infomaniac
Danny Kopping die Lösung von oben funktioniert, und URLLoader-sollten besser als Loader.load().
Aber dann, die Verwendung von Base64Image ist IMHO nicht optimal. Intern, Base64Image verwendet Loader.loadBytes & dekodiert die Base64 vorher - also effektiv, es gibt ein Kodieren in Base64-gefolgt von entschlüsseln.
Ich schlage vor, einfach mit der loadBytes-Methode der Loader so:
Ich weiß nicht, vermeiden Sie die Verwendung von Loader zusammen.
InformationsquelleAutor Stepan