在 Delphi 7 中,我有一个使用 TCanvas 组件输出一些信息的库。生成的图像约为 4800*6000 像素,我想将其打印并保存为.jpeg
.
为此,我创建了一个 TBitmap 并将其 Canvas 作为参数提供给库,然后将位图分配给 jpeg。显然,这占用了太多内存,因为我在尝试设置位图的宽度和高度时遇到异常,说“没有足够的存储空间来处理这个命令”。
// output to printer
Printer.BeginDoc();
doPrint(Printer.Canvas);
Printer.EndDoc();
// output in bmp.Canvas
bmp := TBitmap.Create;
bmp.Width := Printer.PageWidth;
bmp.Height := Printer.PageHeight; // <- BAM! Exception!
doPrint(bmp.Canvas);
// save as jpeg
jpg := TJPEGImage.Create;
jpg.Assign(bmp);
jpg.SaveToFile('...');
// free
bmp.Free();
jpg.Free();
我究竟做错了什么?我可以将 Printer.Canvas 直接保存为.jpeg
文件吗?
编辑:将图像尺寸近似值从 2000*2000 更新为 4800*6000