gpt4 book ai didi

java - 如何使用 dcm4che-3.2.1 将 JPG 图像转换为 DICOM 文件?

转载 作者:行者123 更新时间:2023-11-29 05:31:00 28 4
gpt4 key购买 nike

我可以设置属性并创建dicom文件,但我不能将图像写入dicom文件?

最佳答案

我已经用我已有的图像尝试过它并且它可以工作,但我预计它不适用于 RGB 图像。虽然是这样的

    BufferedImage jpg = ImageIO.read(new File("myjpg.jpg"));

//Convert the image to a byte array
DataBufferUShort buff = (DataBufferUShort) jpg.getData().getDataBuffer();
short[] data = buff.getData();
ByteBuffer byteBuf = ByteBuffer.allocate(2*data.length);
int i = 0;
while (data.length > i) {
byteBuf.putShort(data[i]);
i++;
}

//Copy a header
DicomInputStream dis = new DicomInputStream(new File("fileToCopyheaderFrom.dcm"));
Attributes meta = dis.readFileMetaInformation();
Attributes attribs = dis.readDataset(-1, Tag.PixelData);
dis.close();

//Change the rows and columns
attribs.setInt(Tag.Rows, VR.US, jpg.getHeight());
attribs.setInt(Tag.Columns, VR.US, jpg.getWidth());
System.out.println(byteBuf.array().length);
//Attributes attribs = new Attributes();

//Write the file
attribs.setBytes(Tag.PixelData, VR.OW, byteBuf.array());
DicomOutputStream dcmo = new DicomOutputStream(new File("myDicom.dcm"));
dcmo.writeFileMetaInformation(meta);
attribs.writeTo(dcmo);
dcmo.close();

编辑 1

我假设你的图像在这里有一个无符号的短数据缓冲区。

DataBufferUShort buff = (DataBufferUShort) jpg.getData().getDataBuffer();

要处理其他数据缓冲区,您应该检查类型,相应地进行转换,然后转换为字节数组。对于字节缓冲区,应该很容易

DataBufferByte buff = (DataBufferByte) jpg.getData().getDataBuffer();

然后

buff.getData(numOfBank)

numOfBank 为 0 为您的图像

应该返回一个字节数组

关于java - 如何使用 dcm4che-3.2.1 将 JPG 图像转换为 DICOM 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087778/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com