В 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