Pregunta

ArrayindexOutOfBoundsexception al intentar usar Apache-Commons Sanselan para cargar un TIFF que se comprimió con compresión de embalajes.

Código:

import org.apache.sanselan.*;

public class TIFFHandler {
    public static Image loadTIFF(String fileName) throws ImageReadException, IOException {
        File imageFile = new File(fileName);
        BufferedImage bi = Sanselan.getBufferedImage(imageFile);
        return bi;
    }

    public static void main(String[] args) throws IOException, ImageReadException {
        String TIFFFILE = "test_image.tif";
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        BufferedImage bi = (BufferedImage) loadTIFF(TIFFFILE);
        ImageIcon ii = new ImageIcon(bi);
        JLabel lbl = new JLabel(ii);
        panel.add(lbl);
        frame.setVisible(true);
    }
}

STICK TRACK:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 426
at org.apache.sanselan.common.PackBits.decompress(PackBits.java:55)
at org.apache.sanselan.formats.tiff.datareaders.DataReader.decompress(DataReader.java:127)
at org.apache.sanselan.formats.tiff.datareaders.DataReaderStrips.readImageData(DataReaderStrips.java:96)
at org.apache.sanselan.formats.tiff.TiffImageParser.getBufferedImage(TiffImageParser.java:505)
at org.apache.sanselan.formats.tiff.TiffDirectory.getTiffImage(TiffDirectory.java:163)
at org.apache.sanselan.formats.tiff.TiffImageParser.getBufferedImage(TiffImageParser.java:441)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1264)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1255)
at TIFFHandler.loadTIFF(FieldSheetHandler.java:42)
at TIFFHandler.main(FieldSheetHandler.java:90)

He intentado un análisis del problema, pero estoy bastante perdido ... Cualquier dirección sería realmente útil.Las imágenes de TIFF son un dolor en el A **.

¿Fue útil?

Solución

Puede probar la versión actualizada de las imágenes de los comunes desde el repositorio de instantáneas Apache.El Javadoc aún no está en línea, tendrá que construirlo por Comprobación del código de SVN y ejecución mvn javadoc:javadoc.

Si encuentra más problemas o desea sugerir una mejora, puede archivarlos en JIRA .Además, los desarrolladores estarán encantados de ayudarlo si tiene preguntas sobre el uso de la API.Te esperan en la Lista de correo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top