2009-06-08 1 views
0

イメージをFlashに読み込み、JPGEncoderを使用してイメージをByteArrayにエンコードし、これをAMF PHPに送信して、bytearrayをファイルに書き出します。これはすべて正しく動作するように見え、Photoshop CS4で結果ファイルをダウンロードできます。私はデスクトップからそれを開くか、Flashで戻ってそれを開こうとすると、それは仕事をdoesntの... Picasaの私のデフォルトの画像ブラウザは「無効」と言うASGE3からAMFPHPに送信されたtearrayによるJPGEncodedが、無効なイメージをもたらすのはなぜですか?

ここで私は、ファイルへのByteArrayを書き込むために使用コードです -

$ jpg = $ GLOBALS ["HTTP_RAW_POST_DATA"]; file_put_contents($ filename、$ jpg);

これは... NetConnectionクラスを使用してサービスに接続して呼び出すと、「Im sending jpg data」と言う必要がありますか?私はJPGEncoderがそれを世話したと仮定しました。ファイルを作成する前に、どのようにバイトリストを検証できますか? MIMEタイプなどを設定する必要はありますか?

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

} 
+0

私が手にcouldntの:AMFPHPでPOSTデータが抽象化されるので、あなたがあなたのAMFPHP UploadServiceスクリプトに必要なものをご_uploadService.call --jpg_binaryとcurrentImageFilename--このように2つの入力引数を受け取る関数でありますこれはうまくいく! :(...だから、私はファイルを問題なく出力するプレーンな古いPHPページに画像を送ります:) – undefined

答えて

1

あなたの問題は、あなたのPHPサービスである: -

おかげで、ここでいくつかのコードです。

<?php 
class UploadService { 

    function receiveByteArray($ba, $filename) { 

      $result = file_put_contents($filename, $ba->data); 
      if ($result == FALSE) { 
       trigger_error("File save failed"); 
      } 
    } 
} 
?> 
関連する問題