Java 在屏幕上显示DICOM文件

Java 在屏幕上显示DICOM文件,java,dicom,Java,Dicom,我在显示dicom文件时遇到一些问题。我已经尝试了很多方法将图片显示在相框上,但它所做的只是产生一个错误,即图像是空的。如有任何建议,将不胜感激。我知道图像不是空的,它可以从笔记本电脑访问图像 多谢各位 以下是我用java编写的代码: class Open{ public static void main(String s) throws IOException{ String [] array = s.split("/"); String k = array[0]; k

我在显示dicom文件时遇到一些问题。我已经尝试了很多方法将图片显示在相框上,但它所做的只是产生一个错误,即图像是空的。如有任何建议,将不胜感激。我知道图像不是空的,它可以从笔记本电脑访问图像

多谢各位

以下是我用java编写的代码:

class Open{
public static void main(String s) throws IOException{
    String [] array = s.split("/");
    String k = array[0];
    k+= "/";
    k += array[1];
    k+= "/";
    k += array[2];
    k+= "/";
    k+= array[3];
    k+= "/";
    k+= array[4];
    k+= "/";
    System.out.println(k);

    System.out.println(s.length());

    if(s.length() == 0){
        System.out.println("The path and filename are empty!");
        System.exit(0);
    }

    File source = new File(k, array[5]);

    final Image image = ImageIO.read(source);
    //final BufferedImage image = ImageIO.read(new File(k, array[5]));

    if(image == null){
        System.out.println("The image is empty or can't be read!");
        System.exit(0);
    }

    JFrame frame = new JFrame();
    final Rectangle bounds = new Rectangle(0,0,240, 240);

    JPanel panel = new JPanel();
    //{
//          public void paintComponent(Graphics g){
 ////               Rectangle box = g.getClipBounds();
 ////               ((Graphics2D)g).fill(box);
 ////               
////                if(bounds.intersects(box)){
//                  g.drawImage(image,0,0,null);
 ////               }
//          }
//      };

    JLabel b = new JLabel(new ImageIcon(image));
    panel.add(b);
    frame.getContentPane().add(panel);
    panel.setPreferredSize(new Dimension(300, 300));
    frame.pack();
    frame.setVisible(true);
}
}
你可以用它来做。文档几乎不存在,但是有javadocs


如果您主要希望显示图像,则应该能够使用com.pixelmed.display包中的和来加载和显示图像。如果要解析DICOM属性,可以从中的一种读取方法开始。

DICOM不是一种常用的数据格式,因此不要指望它会得到开箱即用的支持。搜索一些管理它们的java库。ImageIO并不声称支持所有可能的图形文件类型。我没看到迪康在里面。您确定它应该与DICOM文件一起工作吗?Offtopic:如果s.length==0,则永远不会执行块中的代码:如果s是空字符串,那么您将在行字符串k=array[0]处获得“索引超出范围”;我认为它应该和ImageIO一起工作…因为我不知道从哪里可以得到dicim库?有人知道在哪里可以买到吗?谢谢你,我在修改代码时忘记了修改。你如何使用imageJ或pixelmed,就像你如何将它集成到eclipse中一样?因为我使用的是oracle的Dicom图像IO插件,但不幸的是没有免费的完整版本。所以我不确定如何使用pixelmed或imageJ。我还发现oracle one非常容易理解和使用。pixelmed或imageJ是否易于使用?如果是,你如何使用它?这就是我一直在使用的:在Eclipse中使用它们就像使用任何其他外部JAR一样,将其添加到“库”选项卡上项目的构建路径中。好的,尝试一下,并在单独的主题中发布您的特定问题。这两个库都在首页有文档链接。好的,谢谢,我知道了,但是pixelmed是用C编码的吗?因为我相信imageJ是用java编写的。