无法在 Java/Groovy 中使用 zipentry 在 KMZ 中正确显示图像

Can't get images to display properly in KMZ using zipentry in Java/Groovy

基本上,我一直在尝试让图像显示在 KMZ 文件的属性下。我当前的设置创建了一个具有以下结构的解压缩目录:

主文件夹/ doc.kml 文件/ img1.jpeg img2.jpeg img3.jpeg ... 然后我使用以下代码将所有内容压缩到 KMZ

    void zipFile(File directory, File file, ZipOutputStream zip) {
        if (!file.isDirectory()){
            def input = new FileInputStream(file)
            String name = file.getPath()
            name = name.replace(kmzDir.path+"\", "")
            zip.putNextEntry(new ZipEntry(name))
            IOUtils.copy(input, zip)
            zip.closeEntry()
        }

    }

    void zipKMZDirectory() {

        BufferedOutputStream fileWriter = new BufferedOutputStream(new FileOutputStream(new File(kmzDir.path + ".kmz")))
        ZipOutputStream zip = new ZipOutputStream(fileWriter)
        resourceDir.listFiles().each { file ->
            zipFile(resourceDir, file, zip)
        }
        kmzDir.listFiles().each { file ->
            zipFile(kmzDir, file, zip)
        }
        zip.close()
        fileWriter.close()
    }

在 KMZ 之外打开 doc.kml 文件工作得很好(在 google earth 中加载图像),但是打开 KMZ 文件并尝试查看任何图像只会显示一个蓝色问题标记代替图像。

我尝试在它尝试加载图像时查看网络数据(右键单击 -> 检查 -> 网络),它说它成功地在 Main Folder/files/image.jpeg 下找到了图像。此外,我尝试删除存储在 kmz 存档中的所有图像,并通过 显示图像的 7zip 手动将所有图像添加回 zip。这告诉我在 zip 压缩阶段 (?) 出现了问题,不允许 google 打开图像(尽管我只是尝试自己查看图像并且它们没有损坏或其他任何东西)。

编辑:我在桌面上使用 Google 地球专业版

我不确定最后是什么问题,我假设是我制作 zip 文件的方式损坏了某些东西。我采取了不同的方法来修复它,我没有制作目录然后压缩它,我基本上只是在制作文件时压缩文件(如下: 作为大纲)