2009-11-06 125 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的内存......