我已经在 Flash 和 openFrameworks 中尝试过这个,但两者都有同样的问题......
我正在构建一个由 1000 张图像组成的画布,然后我将最终图像导出为 jpg
我想将它导出为 6 兆像素 jpg 或类似的东西,但是我的屏幕分辨率远低于此,并且导出只会以我的屏幕尺寸出现。
有没有办法解决这个问题?
谢谢....
我已经在 Flash 和 openFrameworks 中尝试过这个,但两者都有同样的问题......
我正在构建一个由 1000 张图像组成的画布,然后我将最终图像导出为 jpg
我想将它导出为 6 兆像素 jpg 或类似的东西,但是我的屏幕分辨率远低于此,并且导出只会以我的屏幕尺寸出现。
有没有办法解决这个问题?
谢谢....
这很容易。您创建一个所需大小的 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()
而是。