private static List<ImageFileProvider> unzip (final File droppedFile) {
        try {
            final List<ImageFileProvider> providers = new ArrayList<ImageFileProvider> ();
            Enumeration<? extends ZipEntry> entries = new ZipFile (droppedFile).entries ();
            
            for (int i = 1; entries.hasMoreElements (); i++) {
                entries.nextElement ();
                final int finalI = i;
                providers.add (new ImageFileProvider() {
                    @Override
                    public byte[] getImageFile () {
                        try {
                            // Make a new zipFile and jump to the correct entry
                            final ZipFile zf = new ZipFile (droppedFile);
                            final Enumeration<? extends ZipEntry> es = zf.entries ();
                            ZipEntry ze = null;
                            for (int j = 0; j < finalI; j++) {
                                ze = es.nextElement ();
                            }
                            
                            // Unzip
                            final InputStream is = zf.getInputStream (ze);
                            final ByteArrayOutputStream baos = new ByteArrayOutputStream ();
                            copy (is, baos);
                            
                            return baos.toByteArray ();
                        } catch (ZipException e) {
                            e.printStackTrace();
                            return null;
                        } catch (IOException e) {
                            e.printStackTrace();
                            return null;
                        }
                    }
                });
            }
            
            return providers;
        } catch (ZipException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }