Ver Mensaje Individual
  #2  
Antiguo 05-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Yo tampoco encuentro la manera de cambiársela desde el objeto TBitmap, pero podemos hacerlo directamente sobre el archivo. La resolución se guarda en la cabecera del bitmap, así que no tenemos mas que cambiar esos valores en la cabecera.

Algo así:
Código Delphi [-]
procedure SaveToFileDPI(Bitmap: TBitmap; Filename: String; Rx, Ry: Double);
var
  Stream: TMemoryStream;
  InfoHeader: BITMAPINFOHEADER;
begin
  Bitmap.SaveToFile(Filename);
  with TFileStream.Create(Filename,fmOpenReadWrite) do
  try
    Seek(Sizeof(BITMAPFILEHEADER),soFromBeginning);
    Read(InfoHeader,Sizeof(InfoHeader));
    InfoHeader.biXPelsPerMeter:= Trunc((Rx * 10000) / 254);
    InfoHeader.biYPelsPerMeter:= Trunc((Ry * 10000) / 254);
    Seek(Sizeof(BITMAPFILEHEADER),soFromBeginning);
    Write(InfoHeader,Sizeof(InfoHeader));
  finally
    Free;
  end;
end;

// Por ejemplo si bitmap es un objeto del tipo TBitmap
SaveToFileDPI(Bitmap,'c:\1.bmp',300,300);
Responder Con Cita