L'Image comme objet ByteArray dans Flex
Je voudrais être en mesure de déplacer des images dans et hors de Flex par la conversion en arrière et en avant entre ByteArrays. J'ai eu quelques problèmes avec cela, j'ai donc conçu un programme de test simple, et même que je n'arrive pas à travailler. Voici le code que j'essaie en ce moment:
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;
}
Jusqu'à présent, le processus du haut vers le bas: Cliquez sur le bouton 3, l'image s'affiche, tout va bien. Cliquez sur le bouton 4, et j'obtiens "Erreur n ° 2044: non Gérée IOErrorEvent:. texte=Erreur #2124: fichier Chargé est un type inconnu." après la ligne "loader.loadBytes(myByeArray);" dans la fonction button4_clickHandler. Aussi loin que je peux dire que je suis en utilisant tout comme prévu. Je voudrais vraiment apprécier toutes les suggestions à me faire aller dans la bonne direction. Merci!
Vous devez vous connecter pour publier un commentaire.
Découvrez le code suivant:
La b64Img objet que j'ai mis le source propriété est un Base64Image qui est une partie de la grande FlexLib projet. Donc, en effet, ce que vous faites est la suivante:
Acclamations
Danny Kopping la solution ci-dessus devrait fonctionner, et URLLoader devrait faire mieux que Chargeur.load().
Mais ensuite, l'utilisation de Base64Image est à mon humble avis n'est pas optimal. En interne, Base64Image utilise le Chargeur.loadBytes & décode le Base64 à l'avance - donc, effectivement, il y a un encodage en Base64 suivie par une décoder.
Je suggère tout simplement à l'aide de la loadBytes méthode de Chargeur comme ceci:
Je ne sais pas de manière à éviter d'utiliser le Chargeur de tout.