如何獲取一張圖片文件的DPI值呀???(40分)

  • 主题发起人 主题发起人 housir
  • 开始时间 开始时间
H

housir

Unregistered / Unconfirmed
GUEST, unregistred user!
如何獲取一張圖片文件的DPI值呀??
我用GetDeviceCaps函數獲得的好像只是屏幕的DPE值呀﹐﹐﹐還請哪位DFW指教。。謝謝。。。
 
自己頂﹐﹐等高人回答。。。
 
自己頂﹐﹐等高人回答。。。
 
自己頂﹐﹐等高人回答。。。
 
哪位DFW幫下忙呀﹐分不夠再加﹐﹐﹐﹐。。。。
 
哪位DFW幫下忙呀﹐分不夠再加﹐﹐﹐﹐。。。。
 
高人呢﹐﹐急呀﹐﹐﹐
 
位图的DPI应该就是位图的宽高乘积吧?
 
不是的呀。。。
 
DPI打印的时候才用的到
//获得BMP分辨率
function GetBmpDPI(Bitmap: TBitmap): LongInt;
var
Stream: TMemoryStream;
Data: Word;
A: Double;
begin
Result := 0;
Stream := TMemoryStream.Create;
try
Bitmap.SaveToStream(Stream);
Stream.Position := 38;
if Stream.Read(Data,2) = 2 then
begin
A := Data;
Result := Round(A / 39.370079);
end;
finally
Stream.Clear;
Stream.Free;
end;
end;
//获得JPEG分辨率,只能获得delphi创建的jpg文件
function GetJPEGDPI(JPEGImage:TJPEGImage): LongInt;
const
BufferSize = 50;
var
Buffer : STRING;
Stream : TMemoryStream;
Data : Word;
begin
Result := 0;
Stream := TMemoryStream.Create;
try
JPEGImage.SaveToStream(Stream);
SetLength(Buffer, BufferSize);
Stream.Seek(0,soFromBeginning);
Stream.Read(buffer[1], BufferSize);
if POS('JFIF'+#$00, buffer)>0 then begin //处理JFIF格式
Stream.Position := $E;
if Stream.Read(Data,2) = 2 then
Result:=Swap(Data);
if Result<72 then Result:=72;
end else Result:=72;
finally
Stream.Clear;
Stream.Free;
end;
end;
 
DPI 是个错误

DPI 本身不会保存在图象文件里面(个别格式,比如psd) 除外, 保存此信息, 同时就保存了图片的输出尺寸.

大多数图片只有 pixel 像素 x * y 的说法

对于不同输出设备 dpi 是不一样的 ,比如屏幕 当前最多的是 96dpi ,打印机有 300 ,112 ,600,1200 等 ,ls 已经讲了 delphi 生成的 jpg 是保存了此信息的,因为 他生成的图片是基于 屏幕的, lz 如果非要 的话, 可能可以按 能找到的图片 都是基于 96dpi,然后按要输出的 dpi 进行转换吧.
 
后退
顶部