导出比原始屏幕分辨率更大的屏幕捕获图像?

时间:2012-12-05 08:34:24

标签: actionscript-3 flash image-processing openframeworks

我在Flash和openFrameworks中尝试了这个,但在两者中都遇到了同样的问题......

我正在构建一个由1000张图像组成的画布,然后我将最终图像导出为jpg

我想将它导出为600万像素的jpg或类似的东西,但是我的屏幕分辨率远低于此值,并且导出仅出现在我的屏幕尺寸上..

有没有办法解决这个问题?

...谢谢

1 个答案:

答案 0 :(得分:2)

这很容易。您创建所需大小的BitmapData对象,然后以您需要的方式绘制所需的所有内容,然后使用JPEGEncoder和pwn对该位图数据进行编码。一个例子:

public function saveAsPNG():void {
        if (frameset[0] == null) return;
        var fr:FileReference = new FileReference();
        var totalHeight:int = Math.ceil(Math.sqrt(totalFrames));
        var iter:int = totalHeight;
        if (iter * (iter - 1) >= totalFrames) totalHeight--;
        var totalWidth:int = iter * baseRect.width;
        totalHeight *= baseRect.height;
        var dp:Point = new Point();
        var bigBitmap:BitmapData = new BitmapData(totalWidth, totalHeight, true, 0);
        for (var i:int = 0; i < totalFrames; i++) {
            var j:int = Math.floor(i / iter);
            var k:int = i - j * iter;
            dp.x = k * baseRect.width;
            dp.y = j * baseRect.height;
            bigBitmap.copyPixels(frameset[i], baseRect, dp); // semi-square bitmap as a result
        }
        fr.save(PNGEncoder.encode(bigBitmap));
    }

这需要一个名为“frameset”的BitmapDatas序列并将其拍在名为“bigBitmap”的单个BitmapData上,然后将其导出为PNG - 我使用此格式,因为我需要详细的透明度。由于源对象属于BitmapData类型,因此不涉及BitmapData.draw(),而是BitmapData.copyPixels()