public RarHandler(File album) {
        Logger.getLogger(RarHandler.class.getName()).entering(RarHandler.class.getName(), "RarHandler", album);
        try {
            archive = new Archive(album);
        } catch (RarException | IOException ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Cannot read the RAR archive", ex);
            new InfoInterface(InfoInterface.InfoLevel.ERROR, "file-read", album.getName());
            Logger.getLogger(RarHandler.class.getName()).exiting(RarHandler.class.getName(), "RarHandler");
            return;
        }
        if (archive.isEncrypted()) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "RAR archive encrypted");
            new InfoInterface(InfoInterface.InfoLevel.ERROR, "file-read", album.getName());
            Logger.getLogger(RarHandler.class.getName()).exiting(RarHandler.class.getName(), "RarHandler");
            return;
        }
        List<FileHeader> fh = archive.getFileHeaders();
        Collections.sort(fh, (FileHeader o1, FileHeader o2) -> o1.getFileNameString().compareTo(o2.getFileNameString()));
        ListIterator<FileHeader> it = fh.listIterator();
        while (it.hasNext()) {
            FileHeader currentEntry = it.next();
            if (!currentEntry.isDirectory() && isAnImage(currentEntry.getFileNameString())) {
                compressedFilesHeaders.add(currentEntry);
            }
        }
        Logger.getLogger(RarHandler.class.getName()).exiting(RarHandler.class.getName(), "RarHandler");
    }