델파이 7에서는 TCanvas 구성 요소를 사용하여 정보를 출력하는 라이브러리가 있습니다. 결과 이미지는 약 4800 * 6000 픽셀이고 인쇄하려면 .jpeg
으로 저장하고 싶습니다..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 개
어떤 라이브러리인가요, GETMEM 또는 이와 유사한 것을 강요 당합니까? 이게 TBitmap 인 것처럼 내가 묻는 이유는 너 괜찮을거야. RE – Reallyethical
나는 특별한 것을 사용하지 않고있다. 라이브러리는 캔버스를 사용하여 정보를 출력하는 것일뿐 아니라 Delphi로 작성되었으며 전체 소스 코드는 "var s : TStringList"및 " cnv.TextOut (..) "그래서 그것은 쉽게 다시 컴파일 될 수 있고 괜찮을 것이다. – Tom