java哪个类提供了获取图片所占存储空间大小?或者如何计算?求详细

图片所占内存大小 = 图片长度(像素) * 图片宽度(像素) * 一个像素所占内存空间(单位:字节)
光是这个公式怎么算?宽度和高度确实可以得到,但是这个色深怎么来的??不理解

图片占内存容量计算公式为:
图片所占内存大小 = 图片长度(像素) * 图片宽度(像素) * 一个像素所占内存空间(单位:字节)
一般地,一个象素所占内存空间根据机器颜色数(专业词汇叫色深Color Depth)来决定:(1)Nokia 老S40机器 颜色数为4096色,就是2^12, 一个象素所占内存空间为1.5个字节;(2)Nokia S40新版 机器和 S60机器 颜色数为65536色,就是2^16, 一个象素所占内存空间为2个字节;有些机器颜色数为26w色,就是2^18=2.2字节,1600w = 2^24=3个字节,一个象素所占内存空间为4个字节。
ps:专业名词“8位”是指所能表现的颜色深度:一个8位图像仅最多只能支持256(2^8)种不同颜色,1个字节。追问

色深在java代码中如何取得??难道代码中无法计算或获得存储大小?

追答

getpixcolor取得当前屏幕的颜色,代码中直接获取的只是图片大小,并不代表其所占内存大小。但他们是成正比的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-27
File file = new File(“f:/”,“图片.jpg”);
try {
Iterator readers = ImageIO.getImageReadersByFormatName(“jpg”);
ImageReader reader = (ImageReader) readers.next();
ImageInputStream iis = ImageIO.createImageInputStream(file);
System.out.println(iis.length()/1024+"k");//图片大小
} catch (IOException e) {
e.printStackTrace();
}
第2个回答  2012-06-23
不知道
第3个回答  2012-06-21
Java存取图片都是把图片路径存取到数据库中的么追问

不是咨询存储方式 是想问下如何得到图片所占内存空间大小

追答

java中获取图片的大小的方式有两种,一种使用java.awt.image.BufferedImage 类。

//ImageIO.read()有多个实现。
java.awt.image.BufferedImage img = javax.imageio.ImageIO.read(new File("fileName"));
int width = img.getWidth();
int height = img.getHeight();

另外一种使用javax.swing.Icon。

//Icon的常见实现为ImageIcon,该类有多个构造函数。
Icon icon = null;
int width = icon.getIconWidth();
int height=icon.getIconHeight();

追问

- -! 不是尺寸。。

追答

有了高宽还不会算? 就像楼上说的 一个像素占内存的大小相乘就OK了

追问

关键就是不理解色深是个神马东西 如何取得

相似回答