如何取得一个jpg文件的dpi?(100分)

  • 主题发起人 主题发起人 ilook
  • 开始时间 开始时间
I

ilook

Unregistered / Unconfirmed
GUEST, unregistred user!
如何取得一个jpg文件的dpi的值?最好能分别取得水平分辩率和垂直分辩率。
一般图片特别是photoshop里处理的图片为72dpi,但有一个系统,要求图片都为300dpi的。所以要加一个程序进行判断。
谢谢!
 
Function GetJpgDpi(filename: string):Cardinal;
var
Buffer: string;
index: Integer;
FileStream: TFileStream;
begin
Result:=0;
FileStream := TFileStream.Create(filename, fmOpenReadWrite);
try
SetLength(Buffer, 50);
FileStream.Read(buffer[1], 50);
index := Pos('JFIF' + #$00, buffer);
if index > 0 then
begin
FileStream.Seek(index+8, soFromBeginning);//X轴DPI,2字节,Y轴紧随其后
FileStream.Read(Result,2);
end
finally
FileStream.Free;
end;
end;
注意,扫描仪或photoshop处理后保存的有dpi值,直接数码相片某些相机存的jpg没有dpi值(其实也有,存于Exif中,不了解该结构,不知如何读),所以在返回0是建议默认dpi=300.
 
bmp:tbitmap;
jpg:tjpeg;
......[:)]
在bmp上绘制完图形,然后
[red]jpg.assign(bmp);
该如何设置jpg的分辨率呢,默认都是72,能否设成300呢,请赐教,谢谢!
[/red]
 
后退
顶部