日期:2014-05-20  浏览次数:20813 次

java 如何取得图片的宽度,厘米而非象素
如题;
BufferedImage image = ImageIO.read(new File("d:\\img11.jpg"));
System.out.println(image.getWidth());  
System.out.println(image.getHeight()); 

像这样取到的是图片的象素,怎么换算成厘米,是不是还跟分辨率有关系;
DPI 和PPI 。。?
哪位能帮忙举例子,或说明,,

------解决方案--------------------
一个像素的尺寸是和分辨率有关的,例如分辨率是72dpi的话,也就是每英寸里有72个像素,每像素就是1/72英寸.如果精度是300dpi的话,那每像素就是1/300英寸了,1英寸等于2.54厘米!
如果都是1厘米下,当然是300dip比较清晰的。做的图只在电脑上看看,比如网页,桌面,那就72dip够了,做印刷和相片就得300dip了,这样才清晰。

分辨率在96dpi下大约是一厘米里有38个像素点,也就是1像素等于1/38厘米。显示器的分辨率大多数都是96dpi的,也就是说显示器一厘米中大概有38个像素点!
分辨率在300dpi下大约是一厘米里有118个像素点,也就是1像素等于1/118厘米。

------解决方案--------------------
感觉换算成厘米比较复杂啊,为什么要换成厘米呢?
------解决方案--------------------
位图大小使用像素度量的
------解决方案--------------------
并不是所有图片都有DPI属性的,如果你确定你图片有这个属性。你可以先下载apache中的Sanselan项目
然后读取里面的XResolution、YResolution、Resolution Unit,如果存在就可以再判断图片像素大小再计算。