Im chargement des images dans Flash et en utilisant JPGEncoder pour coder l'image à un ByteArray et l'envoyer à AMF PHP qui écrit le bytearray dans un fichier. Tout cela semble fonctionner correctement et je peux très bien télécharger le fichier résultant dans Photoshop CS4. Lorsque je tente de l'ouvrir à partir du bureau ou ouvrez-le dans Flash le travail ne marche pas ... Picasa mon navigateur d'image par défaut, dit « non valide »Pourquoi JPGEncoded bytearray est-il envoyé d'AS3 à AMFPHP, entraînant une image invalide?
Voici le code que je l'utilise pour écrire le bytearray dans un fichier -
$ jpg = $ GLOBALS ["HTTP_RAW_POST_DATA"]; file_put_contents ($ filename, $ jpg);
Ça y est ... J'utilise la classe NetConnection pour me connecter et appeler le service, dois-je dire Im envoyer des données jpg? J'ai supposé que JPGEncoder s'en occupait. Comment puis-je valider le bytearray avant d'écrire le fichier? Ai-je besoin de définir le type MIME ou quelque chose?
Merci - voici quelques code:
item.load();
function _onImageDataLoaded(evt:Event):void {
var tmpFileRef:FileReference=FileReference(evt.target);
image_loader=new Loader ;
image_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onImageLoaded);
image_loader.loadBytes(tmpFileRef.data);
}
function _onImageLoaded(evt:Event):void {
bitmap=Bitmap(evt.target.content);
bitmap.smoothing=true;
if (bitmap.width>MAX_WIDTH||bitmap.height>MAX_HEIGHT) {
resizeBitmap(bitmap);
}
uploadResizedImage(bitmap);
}
function resizeBitmap(target:Bitmap):void {
if (target.height>target.width) {
target.width=MAX_WIDTH;
target.scaleY=target.scaleX;
} else if (target.width >= target.height) {
target.height=MAX_HEIGHT;
target.scaleX=target.scaleY;
}
}
function uploadResizedImage(target:Bitmap):void {
var _bmd:BitmapData=new BitmapData(target.width,target.height);
_bmd.draw(target, new Matrix(target.scaleX, 0, 0, target.scaleY));
var encoded_jpg:JPGEncoder=new JPGEncoder(90);
var jpg_binary:ByteArray=encoded_jpg.encode(_bmd);
_uploadService=new NetConnection();
_uploadService.objectEncoding=ObjectEncoding.AMF3
_uploadService.connect("http://.../amfphp/gateway.php");
_uploadService.call("UploadService.receiveByteArray",new Responder(success, error), jpg_binary, currentImageFilename);
}
Je ne pourrais pas obtenir ceci pour fonctionner !! :(... alors maintenant j'envoie l'image à une vieille page PHP qui écrit le fichier sans problème ... :) – undefined