Java 如何跳过BMP图像的标题部分
我需要处理位图图像的主体部分,为此我需要跳过位图图像的标题部分 如何识别位图图像标题占用的字节数?这就是我现在正在做的,但必须有更好的方法:Java 如何跳过BMP图像的标题部分,java,bitmap,bufferedimage,javax.imageio,Java,Bitmap,Bufferedimage,Javax.imageio,我需要处理位图图像的主体部分,为此我需要跳过位图图像的标题部分 如何识别位图图像标题占用的字节数?这就是我现在正在做的,但必须有更好的方法: class Test{ public static void main(String ... a){ try{ //I can't find any ideas to skip the header portion of bmp image
class Test{
public static void main(String ... a){
try{
//I can't find any ideas to skip the header portion of bmp image
FileInputStream fis=new FileInputStream("C:\\ja\\text1.bmp");
BufferedImage bi=ImageIO.read(fis);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.write(bi,"bmp",baos);
baos.flush();
byte [] data=baos.toByteArray();
baos.close();
double i=0;
System.out.print(data.length);
while(i<data.length){
//data[(int)i]=(byte)0xFF;
if(i>5000d && i<17000d)
data[(int)i]=0;
i++;
}
//edit it.....
ByteArrayInputStream bais=new ByteArrayInputStream(data);
bi=ImageIO.read(bais);
ImageIO.write(bi,"bmp",new File("C:\\ja\\text2.bmp"));
}
catch(Exception e){
e.printStackTrace();
}
}
}
类测试{
公共静态void main(字符串…a){
试一试{
//我找不到任何跳过bmp图像标题部分的方法
FileInputStream fis=新的FileInputStream(“C:\\ja\\text1.bmp”);
BuffereImage bi=图像IO.read(fis);
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
图像IO.write(bi,“bmp”,baos);
paos.flush();
字节[]数据=baos.toByteArray();
baos.close();
双i=0;
系统输出打印(数据长度);
while(i5000d&&iMaybe)您应该首先获取文件头的bOffBits
字段:您正在尝试进行什么处理,为什么需要跳过头?请注意,您不能使用ImageIO.read(…)
跳过标题后读取图像,因为标题包含确定图像格式、尺寸和图像其他重要方面所需的字节。