Link to home
Start Free TrialLog in
Avatar of Member_2_5194534
Member_2_5194534

asked on

Change an image PPM (DPI) via Clipboard

I found this function that changes an image PPM (Pels Per Meter) but I was wondering if it's possible to do it via clipboard.


procedure ChangeBitmapDPI(const InputFileName: string; DPI: Integer);
var
PelsPerMeter: Integer;
fs: TFileStream;
begin
if DPI = 0 then DPI := 96; // normal screen resolution, in lack of better value.
PelsPerMeter := Round(DPI / 2.54 * 100); // convert DPI to DPM (dots per inch -> dots per meter)
fs := TFileStream.Create(InputFileName, fmOpenReadWrite or fmShareDenyNone);
try
fs.Position := 38; // biXPelsPerMeter, 4 bytes, X-resolution, Pixels per meter
fs.WriteBuffer(PelsPerMeter, 4);
fs.Position := 42; // biYPelsPerMeter, 4 bytes, Y-resolution, Pixels per meter
fs.WriteBuffer(PelsPerMeter, 4);
finally
fs.Free;
end;
end;

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Ferruccio Accalai
Ferruccio Accalai
Flag of Italy image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial