Aparte de haber visto este hilo y tu
post te respondo;
Si tenemos 2 Gb. de memoria disponible alcanzaremos los 26000 pixeles RGB cuadrados, pero llegar a los 60000 requiere
10 Gb. de memoria que luego debe ser comprimida para obtener una imagen en formato portable (como el que
exiges). Para poder convertirla debe estar en algún momento en memoria porque casi no existen conversores de formatos de imagen que trabajen sobre archivos.
Considerando que pocas
PCs tienen dicha capacidad podríamos crear la imagen directamente en un archivo (.BMP) de 10 Gb. (para los 60000px cuadrados) y luego ver la forma de comprimirlo, sin embargo, el formato BMP en su cabezal tiene un campo de 32 bits que contiene el tamaño del archivo, lo que significa que el tamaño máximo de un
Bitmap es de 4 Gb., lo que nos limita a un
Scan Line menos que
64 Kilo pixeles cuadrados utilizando 256 colores, pero si queremos utilizar el RGB al que estamos acostumbrados solo podremos tener una imagen de 37837 pixeles cuadrados (dicha dimensión también será el limite en un SO de 32 bits)
Código Delphi
[-]program BigBMP; uses Windows;
const
Width = 37837;
Height = 37837;
var
Header: record
FileHeader: TBitmapFileHeader;
InfoHeader: TBitmapInfoHeader;
end = (FileHeader: (bfType: $4D42 ; bfSize: $FFFF367B + SizeOf(Header); bfOffBits: SizeOf(Header));
InfoHeader: (biSize: SizeOf(TBitmapInfoHeader); biWidth: Width; biHeight: Height; biPlanes: 1; biBitCount: 8 * 3 ; biSizeImage: $FFFF367B));
hFile, Size, Index: Integer;
lpScanLine: PChar;
begin
hFile := _lcreat('image.bmp', 0);
_lwrite(hFile, @Header, SizeOf(Header));
Size := Width * (Header.InfoHeader.biBitCount div 8);
lpScanLine := Ptr(LocalAlloc(LMEM_ZEROINIT, Size));
for Index := 1 to Height do
_lwrite(hFile, lpScanLine, Size);
LocalFree(Cardinal(lpScanLine));
_lclose(hFile);
end.
Trabajando de la anterior forma, es posible ir
dibujando en el BMP por cuadrantes, pero de cualquier forma no podrás abrir ni convertir el archivo… para qué hacerlo si en una resolución de monitor estándar 1600px es una dimensión grande 60000px es una
utopía.
Saludos