日期:2014-05-18  浏览次数:20804 次

如何获得图像的DPI?
希望提供个不把图像加载到程序里的办法

------解决方案--------------------
好象是没办法滴
你头像是多少DPI的,哈哈
------解决方案--------------------
BMP头文件里面貌似有个
------解决方案--------------------
up

ps:LZ的头像是典型的前列腺炎症状 O(∩_∩)O哈哈~
------解决方案--------------------
图片不都是象素吗.应该不是DPI吧.
DPI是指定 1英寸有多少个点. 不同的分辨率下的DPI应该不同吧.
------解决方案--------------------
参考
------解决方案--------------------
楼主的头像有个性。。。
------解决方案--------------------
不知道
------解决方案--------------------
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; 
LONG biWidth; 
LONG biHeight; 
WORD biPlanes; 
WORD biBitCount; 
DWORD biCompression; 
DWORD biSizeImage; 
LONG biXPelsPerMeter; 
LONG biYPelsPerMeter; 
DWORD biClrUsed; 
DWORD biClrImportant; 
} BITMAPINFOHEADER, *PBITMAPINFOHEADER; 
中的
LONG biXPelsPerMeter; 
LONG biYPelsPerMeter; 

------解决方案--------------------
探讨
图片不都是象素吗.应该不是DPI吧.
DPI是指定 1英寸有多少个点. 不同的分辨率下的DPI应该不同吧.

------解决方案--------------------
关注中............
------解决方案--------------------
mark
------解决方案--------------------
获取BMP的..

 public void GetPixSize(ref int x, ref int y, string p_BMPFullFile)
{
FileStream _FileStream = new FileStream(p_BMPFullFile, FileMode.Open, FileAccess.Read);
BinaryReader _Binary = new BinaryReader(_FileStream);
_Binary.BaseStream.Position = 38;

uint _IntX = _Binary.ReadUInt32();
uint _IntY = _Binary.ReadUInt32();

if (_IntX == 0) x = 96;
if (_IntY == 0) y = 96;

x = (int)(_IntX / 40) + 1;
y = (int)(_IntY / 40) + 1;

_FileStream.Close();
}


我这里很多BMP 都是0 但显示为96

------解决方案--------------------
你要double 的?
------解决方案--------------------
算了 你自己算把 1米==40 精确的是 39.37..... 自己算把..