Hola Miguel!
Efectivamente la mejor opción es la que propone <Sergio>; por lo que comentas tu archivo solamente contiene los datos de la imagen, entonces la conversion es directa.
Lo único que me gustaría agregar es la cuestión de la paleta de colores a escala de grises.
Te pongo un ejemplo de como puedes generar una paleta simple.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TStream;
Bitmap:TBitmap;
P: PByteArray;
PaletaGrises: TMaxLogPalette;
y,x,N: Integer;
begin
Stream:=TFileStream.Create('Imagen.raw',fmOpenRead);
Bitmap:=TBitmap.Create;
with Bitmap do begin
Height:=416;
Width:=416;
PixelFormat:=pf8bit; HandleType:=bmDIB;
for y:=0 to Height-1 do begin
P:=ScanLine[y];
for x:=0 to Width-1 do
Stream.Read(P[x],1);
end;
with PaletaGrises do begin
palVersion:= $0300;
palNumEntries:= 256;
for N:=0 to $FF do
begin
with palPalEntry[N] do
begin
peRed := N;
peGreen := N;
peBlue := N;
peFlags := 0;
end;
end;
end;
Palette:=CreatePalette(pLogPalette(@PaletaGrises)^);
end;
Bitmap.SaveToFile('Imagen.bmp');
Image1.Picture.Bitmap.Assign(Bitmap); Bitmap.Free;
Stream.Free;
end;
Un saludo.