public static void deleteOfflineLogImagesFor(final String geocode, final List<Image> keep) {
        if (geocode == null) {
            return;
        }
        final Set<String> filenamesToKeep = CollectionStream.of(keep).map(i -> i.getFile() == null ? null : i.getFile().getName()).toSet();
        final String fileNamePraefix = OFFLINE_LOG_IMAGE_PREFIX + geocode;
        CollectionStream.of(LocalStorage.getOfflineLogImageDir(geocode).listFiles())
                .filter(f -> f.getName().startsWith(fileNamePraefix) && !filenamesToKeep.contains(f.getName()))
                .forEach(File::delete);
    }
Creates a new image Uri for a public image.
Just the filename and uri is created, no data is stored.

@param geocode an identifier which will become part of the filename. Might be e.g. the gccode
@return left: created filename, right: uri for the image
main/src/main/java/cgeo/geocaching/utils/ImageUtils.java