2009-11-06 44 views
1

在我的應用程序中,畫布對象的height = 90 px & width = 86400 px(指示一天中的秒數[60 * 60 * 24])。畫布是可滾動的,用戶可以在其中添加或刪除組件。無法創建畫布的快照

現在,我希望將整個畫布的快照&縮小到910x30的大小以在另一個畫布中繪製拍攝的快照。

任何人都可以告訴我如何拍攝如此大的組件的快照嗎?

我試圖在BitmapData對象中拍攝快照,但是因爲它的最大寬度是2880,無法給出整個畫布快照。

有沒有其他的想法可能,如果是的請讓我知道。

建議歡迎。

+0

1性別/像素?也許你的意思是S /像素?或者最多秒/像素? – 2009-11-06 15:49:38

+0

是,其秒/像素:) – krishna 2009-11-10 05:23:10

回答

0

您可以拍攝大畫布的多個快照,縮小然後將它們拼接在一起。但是對於大型的組件來說,任何類型的位圖捕獲都將非常密集。

0

您也可以嘗試在畫布上設置scaleX/scaleY屬性,使其適合您的910x30大小,然後執行快照。這樣Flash可以爲你擴展。

2

我還沒有測試過這個,但是如果你把BitmapData全部排除在外並且直接從客戶端計算機上直接得到結果呢?像這樣:

var imgSnapshot:ImageSnapshot = ImageSnapshot.captureImage(savableCanvas,72,new PNGEncoder(),false); 
      var bArray:ByteArray = imgSnapshot.data; 

      var fileRef:FileReference = new FileReference(); 
      fileRef.save(bArray,"mySavedImage.png"); 

此外,是否有你的問題錯別字,86,400像素是大量數據的地獄來處理,你可能應該有一些服務器端代碼和片區化技術處理這個(認爲,谷歌地圖)...這種方式,如果你說使用PHP,你可以使用imagick和裁剪所需的動態創建部分。現在,如果它是8,640像素,那麼這是另一個故事,請查看Google代碼上的BitmapDataUnlimited。別擔心,這對商業友好。然而,它確實有代價,一大塊畫布需要管理得很好,在使用後立即丟棄,因爲考慮到一個12k x 12k的bitmapData對象被稱爲至少1GB的內存......