JAVA读取BMP图片文件

由于在eclipse中,无法对BMP图片文件进行读取,因而我们要将BMP文件拆分读取


首先,关联一个BMP文件,建立个输入流来准备存储数据,.用一个一维字节数组去接收BMP文件头部信息

然后读取BMP图片的宽高


File file = new File("G:\\CP\\新文件夹\\160117\\test.bmp");
			FileInputStream fis = new FileInputStream(file);
			byte[] bytes = new byte[54];
			fis.read(bytes);
			int width = byteChangeToInt(bytes[21], bytes[20], bytes[19], bytes[18]);
			int height = byteChangeToInt(bytes[25], bytes[24], bytes[23], bytes[22]);
			System.out.println(width+"  "+height);
			this.setSize(width,height);

然后我们需要写一个方法将BMP文件中的byte数据转换为int类型

由于一个int类型是有四个byte组成的,所以要建立4个字节

private int byteChangeToInt(byte byte1,byte byte2,byte byte3,byte byte4) {
		int value1 = ((int)byte1&0xff)<<24;
		int value2 = ((int)byte2&0xff)<<16;
		int value3 = ((int)byte3&0xff)<<8;
		int value4 = (int)byte4&0xff;
		return value1|value2|value3|value4;

之后,解析颜色,每一个像素点都有三个字节组成(三原色:红、蓝、绿),建立三个二维数组分别保存

然后调用之前的函数将byte转化为int类型


red = new int [height][width];
			green = new int [height][width];
			blue = new int [height][width];


然后遍历宽高上面的每一个像素点,并读取数据存入二位数粗中

for(int i=red.length-1;i>=0;i--){
				for(int j=0;j<red[i].length;j++){
					int b = fis.read();
					int g = fis.read();
					int r = fis.read();
					blue[i][j] = b;
					green[i][j] = g;
					red[i][j] = r;
				}

判断最后是否补零,如果有跳过零 

int zero = 0;
			if(width*3%4!=0){
				zero = 4 - width*3%4;
			}

重绘到界面,并关闭流
public void paint(Graphics g) {
		super.paint(g);
		if(red!=null){
			for(int i=0;i<red.length;i++){
				for(int j=0;j<red[i].length;j++){
					Color color = new Color(red[i][j],green[i][j],blue[i][j]);
					g.setColor(color);
					g.drawLine(j, i, j, i);
				}
			}
		}





  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中将BMP文件转换为DCM文件是可能的,需要使用Java图像处理库以及DICOM(数字成像和通信在医学中)库。下面是一个简单的步骤指南: 1. 导入所需的Java库:首先,您需要导入处理图像和DICOM的Java库,比如ImageIO和dcm4che库。 2. 读取BMP文件:使用ImageIO库中的方法,您可以读取BMP文件并将其加载到内存中。 ```java BufferedImage image = ImageIO.read(new File("input.bmp")); ``` 3. 创建DCM文件:使用dcm4che库中的类和方法,您可以创建一个DICOM文件并设置必要的属性。 ```java DicomObject dicomObject = DicomObject.newDicomObject(); dicomObject.putString(Tag.SOPClassUID, VR.UI, "1.2.840.10008.5.1.4.1.1.7"); // 设置SOP类UID(表示图像存储) dicomObject.putString(Tag.StudyInstanceUID, VR.UI, "YOUR_STUDY_UID"); // 设置研究实例UID // 设置更多的DICOM属性 // 将图像数据写入DICOM文件 dicomObject.putBytes(Tag.PixelData, VR.OW, ((DataBufferByte) image.getRaster().getDataBuffer()).getData()); ``` 请注意,此处的SOP类UID是表示图像存储的UID,可能需要使用其他合适的UID,具体取决于您的需求。 4. 保存DCM文件:使用dcm4che库中的方法,您可以将DICOM对象保存到磁盘上的DCM文件中。 ```java DicomOutputStream dcmOutputStream = new DicomOutputStream(new File("output.dcm")); dcmOutputStream.writeDicomFile(dicomObject); dcmOutputStream.close(); ``` 此代码将基于上面创建的DICOM对象将其写入名为"output.dcm"的文件中。 以上是将BMP文件转换为DCM文件的基本步骤。请注意,这只是一个简单的示例,并且可能需要根据您的具体需求进行更多的设置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值