delphi - 使用 Delphi 处理大图像并保存为 .jpeg

标签 delphi image-processing jpeg delphi-7

在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

最佳答案

您应该能够使用 Graphic32 中的 TBitmap32 处理大型位图 ( http://www.graphics32.org/wiki/ )

关于delphi - 使用 Delphi 处理大图像并保存为 .jpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1639790/

相关文章:

delphi - 如何在 Delphi 的 TDBGrid 中以编程方式添加行

delphi - Delphi XE2:矩形模棱两可?

image - 为什么计算 RGB 的平均值不会产生像素的亮度?

python - 如何在 Python 中将 SVG 转换为 PNG 或 JPEG?

c++ - 快速访问 jpeg 图像的像素值

delphi - 删除临时目录

c - 微 Controller 中的图像接收

python - 测量灰度图像的平滑度

android - Canvas 上的图像到 JPEG 文件

Delphi XE2 : Fail using dcc32. exe编译简单程序