2011-05-25 115 views
4

我必須將MovieClip轉換爲ByteArray並使用POST方法將其發送到php。處理php的人說,只有ByteArray需要發送和轉換爲JPG和PNG可以從PHP端完成。當我建立保存在本地機器上的選項時,使用了以下步驟。將MovieClip轉換爲ByteArray

  1. 轉換爲位圖數據
  2. 使用JPGEncoder和包括PNGEncoder上的BitmapData
  3. 然後assiging到字節數組變量。

所以在這種情況下,不同的字節數組被用於保存JPG和PNG的情況下,它的工作。

我發現代碼轉換的動畫片段,以#1字節組本身

AS3: Export a MovieClip or Canvas to swf

var buffer:ByteArray = new ByteArray(); 
buffer.writeObject(MOVIE_CLIP_HERE); 
buffer.position = 0; 
buffer.writeBytes(...); 

應該是什麼緩衝區對象的writeBytes函數的參數。假設movieclip的名稱是canvas_mc。

我已經想出了PHP的一部分。提前致謝。

+0

'writeObject(MovieClip)'將使用AMF序列化您的剪輯,如果服務器想要捕獲圖像,PHP將難以處理。 – 2011-05-25 08:09:23

回答

5

不要使用ByteArray.writeObject()和解析MovieClip ..

您需要使用bitmapData.getPixels()返回一個ByteArray代表你的位圖的像素。

這裏有一個簡單的例子:

const WIDTH:uint = 100; 
const HEIGHT:uint = 100; 

var rect:Rectangle = new Rectangle(0,0,WIDTH,HEIGHT); 

// create BitmapData 
var bmd:BitmapData = new BitmapData(WIDTH,HEIGHT,true,0); 
bmd.draw(YOUR_MOVIE_CLIP); 

// your byte array 
var ba:ByteArray = bmd.getPixels(rect); 
trace(ba.length); 

基本上你想要做的是使用BitmapData.draw()讓你的影片剪輯的圖形,並存儲爲ByteArray。

+0

+1對於getPixels(),但我發現這個例子令人困惑,因爲它在「繪製平方」中花費了很多時間。不是不正確的,只是不相關的問題(爲什麼不fillRect,無論如何?)。 – 2011-05-25 08:11:18

+0

沒錯,我會簡化這個例子。實際上我不知道它以某種方式逃脫了我的想法:s – Marty 2011-05-25 08:12:46