0

我已经在 Flash 和 openFrameworks 中尝试过这个,但两者都有同样的问题......

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

我想将它导出为 6 兆像素 jpg 或类似的东西,但是我的屏幕分辨率远低于此,并且导出只会以我的屏幕尺寸出现。

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

谢谢....

4

1 回答 1

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”的 BitmapData 序列,并将其覆盖在一个名为“bigBitmap”的 BitmapData 上,然后将其导出为 PNG - 我使用这种格式,因为我需要详细的透明度。由于源对象是 BitmapData 类型,因此不BitmapData.draw()涉及,BitmapData.copyPixels()而是。

于 2012-12-05T08:52:30.950 回答