我有个bmp图像,大小是512*499*24bit,766518 byte.
我用 FileInputStream fin = new FileInputStream(new File("C:\\hand.bmp"));
System.out.println("还能读取字节数:"+fin.available());
输出的值是 257590 。
我就不明白了,这两个数值之间差不多是3倍的关系,但还不是3,是2.9左右。谁能给我解释一下这个。
另外,如果用fin.read(),执行10次能得到10个int数值,这样的话字符流是读了10个字节吗?那就是说一个字节转换成一个int了?
我想把这个BMP图像的灰度矩阵读出来,24bit的图像是不是就是说,3个字节代表一个像素,这个我怎么读啊?
在线等,求助。
我用 FileInputStream fin = new FileInputStream(new File("C:\\hand.bmp"));
System.out.println("还能读取字节数:"+fin.available());
输出的值是 257590 。
我就不明白了,这两个数值之间差不多是3倍的关系,但还不是3,是2.9左右。谁能给我解释一下这个。
另外,如果用fin.read(),执行10次能得到10个int数值,这样的话字符流是读了10个字节吗?那就是说一个字节转换成一个int了?
我想把这个BMP图像的灰度矩阵读出来,24bit的图像是不是就是说,3个字节代表一个像素,这个我怎么读啊?
在线等,求助。
Returns:
an estimate of the number of remaining bytes that can be read (or skipped over) from this input stream without blocking. public int read()throws IOException
Returns:
the next byte of data, or -1 if the end of the file is reached另外,InputStream是字节流,不是字符流。
int lenth=0;
while((lenth=(fin.read(temp))!=-1)
{
System.out.println("读到"+lenth+"字节");
}
fin.close();
2.read返回的结果是int,可以强传为byte,实际读到的是一个byte,int型的前面24位为0,只有最后8位才会有效,所以强转为byte不会产生失去精度问题。
3.这个应该是取出三个字节,然后拼接在一起吧。。