//设定BMP分辨率 procedure SetBmpDPI(Bitmap: TBitmap; DPI: Integer); var Stream: TMemoryStream; Data: Word; begin try Stream := TMemoryStream.Create; Bitmap.SaveToStream(Stream); Data := Round(DPI * 39.370079); Stream.Position := 38; if Stream.Write(Data,2) = 2 then begin Stream.Position := 42; if Stream.Write(Data,2) = 2 then begin Stream.Position := 0; Bitmap.LoadFromStream(Stream); end else //Error writing to Stream... ShowMessage('Error writing to Stream. Data not written.'); end else //Error writing to Stream... ShowMessage('Error writing to Stream. Data not written.'); finally Stream.Free; end; end;
procedure SetBmpDPI(Bitmap: TBitmap; DPI: Integer);
var
Stream: TMemoryStream;
Data: Word;
begin
try
Stream := TMemoryStream.Create;
Bitmap.SaveToStream(Stream);
Data := Round(DPI * 39.370079);
Stream.Position := 38;
if Stream.Write(Data,2) = 2 then
begin
Stream.Position := 42;
if Stream.Write(Data,2) = 2 then
begin
Stream.Position := 0;
Bitmap.LoadFromStream(Stream);
end
else
//Error writing to Stream...
ShowMessage('Error writing to Stream. Data not written.'); end
else
//Error writing to Stream...
ShowMessage('Error writing to Stream. Data not written.');
finally
Stream.Free;
end;
end;
在把Image[i].Picture.Bitmap图片转化为jpeg的格式,在保存成文件:
我象这样做怎么不行,虽然能把Image[i].Picture.Bitmap的分辨率转华成10但是
转变成jpeg后怎么还是老的分辨率,不知道应该怎么改
SetBmpDPI(Image[i].Picture.Bitmap,10);
Jpeg.Assign(Image[i].Picture.Bitmap);
Jpeg.CompressionQuality := 100;
Jpeg.Compress;
strfilepath := Edit1.Text +'\'+ str+ '.jpg';
try
Jpeg.SaveToFile(strfilepath);
except
errflag := false;
end;
系统默认DPI都是72,转换格式的时候也都是以72为标准
要改JPEG格式的DPI需要分析下JPEG文件的内部格式把关于DPI的数值改写下就OK了