Ler Imagem de dentro de um arquivo ZIP sem descompactá-la

Caros colegas;

Estou tentando escrever um método que abre uma imagem de dentro de um arquivo ZIP, porém sem descompacta-lo ou extraí-lo.

[code] private Component AbreArquivoImagem(ZipInputStream zin, ZipEntry entry) throws IOException{
int imageSize = (int) entry.getSize();
byte[] imageBytes = new byte[imageSize];
zin.read(imageBytes);
ByteArrayInputStream b = new ByteArrayInputStream(imageBytes);
//TODO na linha abaixo que está ocorrendo o erro.
BufferedImage image = ImageIO.read(b);

      JLabel lblImagem = new JLabel();
      lblImagem.setIcon(new ImageIcon(image));
      return lblImagem;
}[/code]

Tenho recebido o seguinte retorno:

run:
Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.get(ArrayList.java:324)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkTablesOnly(JPEGImageReader.java:346)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.gotoImage(JPEGImageReader.java:437)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readHeader(JPEGImageReader.java:553)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:931)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:915)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
at poo.AbreZipBehavior.AbreArquivoImagem(AbreZipBehavior.java:174)
at poo.AbreZipBehavior.Abre(AbreZipBehavior.java:91)
at poo.Abridor.Abrir(Abridor.java:41)
at poo.frmPrincipal.imnuAbrirActionPerformed(frmPrincipal.java:177)
at poo.frmPrincipal.access$000(frmPrincipal.java:24)
at poo.frmPrincipal$1.actionPerformed(frmPrincipal.java:66)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 38 segundos)

Será que isso é possível?

Poste entre as tags [ code ] e [ / code ] não precisa aumentar desse jeito.

E mostre no método para ver que vlaor esta saindo.

int imageSize = (int) entry.getSize(); 
System.out.println(imageSize);
byte[] imageBytes = new byte[imageSize]; 

[code] private Component AbreArquivoImagem(ZipInputStream zin) throws IOException{

      Image image = ImageIO.read(zin);

      JLabel lblImagem = new JLabel();
      lblImagem.setIcon(new ImageIcon(image));
      return lblImagem;
}[/code]