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;
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.