怎样得到bmp图像的分辨率?(100分)

  • 主题发起人 主题发起人 xiaohui
  • 开始时间 开始时间
X

xiaohui

Unregistered / Unconfirmed
GUEST, unregistred user!
目的是用不同分辨率扫描的图片能够用相同的原始尺寸进行打印.如果能够得到bmp图像
的分辨率,根据width和height就能够计算处图像的实际尺寸.
 
bmp图像中没有存放分辨率哦!
 
如果如Reboot所说bmp图像中没有分辨率,那么用photoshop打开bmp图像时
为什么能够显示分辨率?
 
bmp图像中存有分辨率,我以前写过一个软件,可以分析出bmp图像中带的所有信息,不过现在没有
办法给你,其实你可以分析一下bmp图像的格式就可以了,你可以去www.csdn.net去找找,那里有
bmp图像格式的详细说明.
 
谢谢ypy,那么对于jpg文件是否同样存在该文件结构
 
xiaohui,拉分来。昨天犯了个错误。
BMP文件头偏移26H和2AH开始的每四个字节(DWORD)
对应水平分辨率和垂直分辨率(每米Pixels个数)。
通常取值为0B12(72dpi)和0EC3(96dpi)。米米!
 
var
FormImage: TBitmap;
Info: PBitmapInfo;
InfoSize: DWORD;
Image: Pointer;
ImageSize: DWORD;
Bits: HBITMAP;
DIBWidth, DIBHeight: Longint;
px,py:integer;
Size: TPoint;
begin
FormImage := Tbitmap.Create;
formimage.loadfromfile('xxxxxxxx');
try
Bits := FormImage.Handle;
GetDIBSizes(Bits, InfoSize, ImageSize);
Info := AllocMem(InfoSize);
Image := AllocMem(ImageSize);
GetDIB(Bits, 0, Info^, Image^);

with Info^.bmiHeader do
begin
DIBWidth := biWidth;
DIBHeight := biHeight;
px:=biXPelsPerMeter; //每米的象素
py:=biXPelsPerMeter; //每米的象素
end;
finally;
formImage.free;
 
多人接受答案了。
 
这个分辨率可以改吗,为什么经Delphi缩放后自动变为72了
 
后退
顶部