Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java tiff图像未正确显示_Java_Tiff - Fatal编程技术网

Java tiff图像未正确显示

Java tiff图像未正确显示,java,tiff,Java,Tiff,我想加载一个tiff文件,它的大小很大。我将堆大小更改为800m左右,以便加载图像,但未正确显示: 这是我的真实形象: 这是我加载后得到的图像的屏幕截图: 这是我加载tiff文件的代码: private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fc = new JFileChooser(Database.basePath); FileNameExtension

我想加载一个tiff文件,它的大小很大。我将堆大小更改为800m左右,以便加载图像,但未正确显示:

  • 这是我的真实形象:

  • 这是我加载后得到的图像的屏幕截图:

  • 这是我加载tiff文件的代码:

    private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {
        JFileChooser fc = new JFileChooser(Database.basePath);
    
        FileNameExtensionFilter extensionFilter = new FileNameExtensionFilter("TIF Files", "tif");
        fc.setFileFilter(extensionFilter);
        int res = fc.showOpenDialog(null);
        File file = null;
        // We have an image!
        try {
            if (res == JFileChooser.APPROVE_OPTION) {
                file = fc.getSelectedFile();
                System.out.println(file.getAbsolutePath().toString().substring(0,
                        file.getAbsolutePath().toString().lastIndexOf("/")));
                path = file.getAbsolutePath().toString().substring(0,
                        file.getAbsolutePath().toString().lastIndexOf("/"));
                basepath = file.getAbsolutePath().toString().replace(".tif", ".xml");
                System.out.println("path:  " + basepath);
                setTarget(file);
    
                // System.out.println("canoic"+file.getCanonicalPath());
            } // Oops!
    
            else {
                JOptionPane.showMessageDialog(null, "You must select one image to be the reference.", "Aborting...",
                        JOptionPane.WARNING_MESSAGE);
            }
    
        } catch (Exception iOException) {
        }
    public void setTarget(File reference) {
        try {
            targetImg = null;
            System.out.println("in try" + reference.getAbsolutePath());
            targetFile = reference;
            byte[] data = Files.readAllBytes(Paths.get(reference.getAbsolutePath()));
            targetImg = rescale(data);
    
        } catch (IOException ex) {
            System.out.println("in Catch");
            Logger.getLogger(HelloWorld.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        panel_1.setLayout(new BorderLayout(0, 0));
        label = new JLabel(new ImageIcon(targetImg));
        JScrollPane scroll = new JScrollPane(label);
        panel_1.add(scroll);
        scroll.addMouseListener(this);
        scroll.addMouseMotionListener(this);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout(0, 0));
    
        setVisible(true);
    }
    public BufferedImage rescale(byte[] originalImage) {
    
        TiffDecoder decoder;
        BufferedImage decodedImage = null;
        try {
            decoder = new TiffDecoder(originalImage);
            decodedImage = decoder.read();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return decodedImage;
    }`
    

    您可以使用

    然后将此图像设置为ImageIcon

     label = new JLabel(new ImageIcon(image));
    

    您需要在类路径中输入
    setTarget
    方法的代码,在该方法中加载图像使用
    ImageIO
    API,而不是从文件读取字节重缩放中的内容?好的,谢谢您的回答。但我不知道如何使用imageIo Api进行阅读。你能帮我吗@桑吉夫苏。。请告诉我您使用
    重新缩放
    试图实现什么?非常感谢@sanjeev。如果它确实对你有帮助,请接受作为答案/投票支持。
     label = new JLabel(new ImageIcon(image));